From 16b398fa5cf21757fd10fb49fb259cf27bc7c2dd Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Wed, 6 Oct 2021 07:58:35 -0400 Subject: [PATCH] bgpd: Check return from generic_set_add 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 --- bgpd/bgp_routemap_nb_config.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/bgpd/bgp_routemap_nb_config.c b/bgpd/bgp_routemap_nb_config.c index 85676e6758..f98c1b0f8f 100644 --- a/bgpd/bgp_routemap_nb_config.c +++ b/bgpd/bgp_routemap_nb_config.c @@ -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); } /* -- 2.39.5