From: Donald Sharp Date: Thu, 31 Aug 2017 13:03:49 +0000 (-0400) Subject: pimd: Improve handling in pim_rp_init X-Git-Tag: frr-4.0-dev~275^2~2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=093c928fc16fb4210c9371af68abbbf4ffb9bfa5;p=mirror%2Ffrr.git pimd: Improve handling in pim_rp_init When we are starting up improve the error handling of pim_rp_init and fix some memory leaks. Signed-off-by: Donald Sharp --- diff --git a/pimd/pim_rp.c b/pimd/pim_rp.c index 05592992a9..ff89a1bdd2 100644 --- a/pimd/pim_rp.c +++ b/pimd/pim_rp.c @@ -98,15 +98,24 @@ void pim_rp_init(struct pim_instance *pim) struct rp_info *rp_info; pim->rp_list = list_new(); + if (!pim->rp_list) { + zlog_err("Unable to alloc rp_list"); + return; + } pim->rp_list->del = (void (*)(void *))pim_rp_info_free; pim->rp_list->cmp = pim_rp_list_cmp; rp_info = XCALLOC(MTYPE_PIM_RP, sizeof(*rp_info)); - if (!rp_info) + if (!rp_info) { + zlog_err("Unable to alloc rp_info"); + list_delete(pim->rp_list); return; + } if (!str2prefix("224.0.0.0/4", &rp_info->group)) { + zlog_err("Unable to convert 224.0.0.0/4 to prefix"); + list_delete(pim->rp_list); XFREE(MTYPE_PIM_RP, rp_info); return; } @@ -554,6 +563,8 @@ int pim_rp_del(struct pim_instance *pim, const char *rp, listnode_delete(pim->rp_list, rp_info); pim_rp_refresh_group_to_rp_mapping(pim); + + XFREE(MTYPE_PIM_RP, rp_info); return PIM_SUCCESS; }