diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c index b59c48d482..1ed82d9adc 100644 --- a/src/network/networkd-route.c +++ b/src/network/networkd-route.c @@ -594,6 +594,7 @@ int route_remove( if (!manager) manager = link->manager; + /* link may be NULL! */ r = sd_rtnl_message_new_route(manager->rtnl, &req, RTM_DELROUTE, route->family, @@ -676,6 +677,8 @@ int route_remove( return log_link_error_errno(link, r, "Could not append RTA_PRIORITY attribute: %m"); if (!IN_SET(route->type, RTN_UNREACHABLE, RTN_PROHIBIT, RTN_BLACKHOLE, RTN_THROW)) { + assert(link); /* Those routes must be attached to a specific link */ + r = sd_netlink_message_append_u32(req, RTA_OIF, link->ifindex); if (r < 0) return log_link_error_errno(link, r, "Could not append RTA_OIF attribute: %m"); @@ -687,8 +690,7 @@ int route_remove( if (r < 0) return log_link_error_errno(link, r, "Could not send rtnetlink message: %m"); - if (link) - link_ref(link); + link_ref(link); /* link may be NULL, link_ref() is OK with that */ return 0; } diff --git a/src/systemctl/systemctl-edit.c b/src/systemctl/systemctl-edit.c index df86841589..f4b256335a 100644 --- a/src/systemctl/systemctl-edit.c +++ b/src/systemctl/systemctl-edit.c @@ -18,7 +18,7 @@ #include "tmpfile-util.h" int cat(int argc, char *argv[], void *userdata) { - _cleanup_(hashmap_freep) Hashmap *cached_id_map = NULL, *cached_name_map = NULL; + _cleanup_(hashmap_freep) Hashmap *cached_name_map = NULL, *cached_id_map = NULL; _cleanup_(lookup_paths_free) LookupPaths lp = {}; _cleanup_strv_free_ char **names = NULL; char **name; @@ -55,7 +55,7 @@ int cat(int argc, char *argv[], void *userdata) { _cleanup_free_ char *fragment_path = NULL; _cleanup_strv_free_ char **dropin_paths = NULL; - r = unit_find_paths(bus, *name, &lp, false, &cached_id_map, &cached_name_map, &fragment_path, &dropin_paths); + r = unit_find_paths(bus, *name, &lp, false, &cached_name_map, &cached_id_map, &fragment_path, &dropin_paths); if (r == -ERFKILL) { printf("%s# Unit %s is masked%s.\n", ansi_highlight_magenta(), @@ -318,7 +318,7 @@ static int run_editor(char **paths) { } static int find_paths_to_edit(sd_bus *bus, char **names, char ***paths) { - _cleanup_(hashmap_freep) Hashmap *cached_id_map = NULL, *cached_name_map = NULL; + _cleanup_(hashmap_freep) Hashmap *cached_name_map = NULL, *cached_id_map = NULL; _cleanup_(lookup_paths_free) LookupPaths lp = {}; char **name; int r; @@ -334,12 +334,12 @@ static int find_paths_to_edit(sd_bus *bus, char **names, char ***paths) { _cleanup_free_ char *path = NULL, *new_path = NULL, *tmp_path = NULL, *tmp_name = NULL; const char *unit_name; - r = unit_find_paths(bus, *name, &lp, false, &cached_id_map, &cached_name_map, &path, NULL); + r = unit_find_paths(bus, *name, &lp, false, &cached_name_map, &cached_id_map, &path, NULL); if (r == -EKEYREJECTED) { /* If loading of the unit failed server side complete, then the server won't tell us * the unit file path. In that case, find the file client side. */ log_debug_errno(r, "Unit '%s' was not loaded correctly, retrying client-side.", *name); - r = unit_find_paths(bus, *name, &lp, true, &cached_id_map, &cached_name_map, &path, NULL); + r = unit_find_paths(bus, *name, &lp, true, &cached_name_map, &cached_id_map, &path, NULL); } if (r == -ERFKILL) return log_error_errno(r, "Unit '%s' masked, cannot edit.", *name);