]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Check return from generic_set_add
authorDonald Sharp <sharpd@nvidia.com>
Wed, 6 Oct 2021 11:58:35 +0000 (07:58 -0400)
committerDonald Sharp <sharpd@nvidia.com>
Wed, 6 Oct 2021 12:47:07 +0000 (08:47 -0400)
Coverity found a couple of spots where FRR was
ignoring the return code of generic_set_add.
Just follow the code pattern for the rest of
the usage in the code.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
bgpd/bgp_routemap_nb_config.c

index 85676e6758a2ee5dade70319b7b1cb88897dc5be..f98c1b0f8fb7a9d04dde2af429b67a583c686d13 100644 (file)
@@ -2440,6 +2440,7 @@ void lib_route_map_entry_set_action_rmap_set_action_aggregator_finish(
        const char *asn;
        const char *addr;
        char *argstr;
+       int ret;
 
        /* Add configuration. */
        rhc = nb_running_get_entry(args->dnode, NULL, true);
@@ -2456,8 +2457,15 @@ void lib_route_map_entry_set_action_rmap_set_action_aggregator_finish(
        rhc->rhc_rule = "aggregator as";
        rhc->rhc_event = RMAP_EVENT_SET_DELETED;
 
-       generic_set_add(rhc->rhc_rmi, rhc->rhc_rule, argstr,
-                       args->errmsg, args->errmsg_len);
+       ret = generic_set_add(rhc->rhc_rmi, rhc->rhc_rule, argstr, args->errmsg,
+                             args->errmsg_len);
+       /*
+        * At this point if this is not a successful operation
+        * bgpd is about to crash.  Let's just cut to the
+        * chase and do it.
+        */
+       assert(ret == CMD_SUCCESS);
+
        XFREE(MTYPE_ROUTE_MAP_COMPILED, argstr);
 }
 /*
@@ -2604,6 +2612,7 @@ lib_route_map_entry_set_action_rmap_set_action_extcommunity_lb_finish(
        enum ecommunity_lb_type lb_type;
        char str[VTY_BUFSIZ];
        uint16_t bandwidth;
+       int ret;
 
        /* Add configuration. */
        rhc = nb_running_get_entry(args->dnode, NULL, true);
@@ -2629,9 +2638,14 @@ lib_route_map_entry_set_action_rmap_set_action_extcommunity_lb_finish(
        if (yang_dnode_get_bool(args->dnode, "./two-octet-as-specific"))
                strlcat(str, " non-transitive", sizeof(str));
 
-       generic_set_add(rhc->rhc_rmi,
-                       "extcommunity bandwidth", str,
-                       args->errmsg, args->errmsg_len);
+       ret = generic_set_add(rhc->rhc_rmi, "extcommunity bandwidth", str,
+                             args->errmsg, args->errmsg_len);
+       /*
+        * At this point if this is not a successful operation
+        * bgpd is about to crash.  Let's just cut to the
+        * chase and do it.
+        */
+       assert(ret == CMD_SUCCESS);
 }
 
 /*