]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
networkd: add assert to appease coverity 17289/head
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 9 Oct 2020 06:14:54 +0000 (08:14 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 9 Oct 2020 06:14:54 +0000 (08:14 +0200)
The code was OK, but not obviously so. Let's add an assert to help a
human or nonhuman reader figure it out.

Coverity CID#1433224.

src/network/networkd-route.c

index b59c48d48238d7afcf2675e165aa2695d0f7eeee..1ed82d9adce0f62ba30e52e96fa1e56aba04ea31 100644 (file)
@@ -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;
 }