From: Donald Sharp Date: Wed, 10 May 2017 23:54:26 +0000 (-0400) Subject: pimd: Error check str2prefix X-Git-Tag: frr-4.0-dev~468^2~146 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=2e8345c139470430c34c1fa18521ba7a566b89ad;p=mirror%2Ffrr.git pimd: Error check str2prefix Signed-off-by: Donald Sharp --- diff --git a/pimd/pim_rp.c b/pimd/pim_rp.c index 6ce07d6adc..4a88e8f484 100644 --- a/pimd/pim_rp.c +++ b/pimd/pim_rp.c @@ -94,7 +94,10 @@ void pim_rp_init(void) if (!rp_info) return; - str2prefix("224.0.0.0/4", &rp_info->group); + if (!str2prefix("224.0.0.0/4", &rp_info->group)) { + XFREE(MTYPE_PIM_RP, rp_info); + return; + } rp_info->group.family = AF_INET; rp_info->rp.rpf_addr.family = AF_INET; rp_info->rp.rpf_addr.prefixlen = IPV4_MAX_PREFIXLEN; @@ -337,7 +340,10 @@ int pim_rp_new(const char *rp, const char *group_range, const char *plist) rp_info->plist = XSTRDUP(MTYPE_PIM_FILTER_NAME, plist); } else { - str2prefix("224.0.0.0/4", &group_all); + if (!str2prefix("224.0.0.0/4", &group_all)) { + XFREE(MTYPE_PIM_RP, rp_info); + return PIM_GROUP_BAD_ADDRESS; + } rp_all = pim_rp_find_match_group(&group_all); /* diff --git a/pimd/pim_util.c b/pimd/pim_util.c index c2e4b2a462..820117a03a 100644 --- a/pimd/pim_util.c +++ b/pimd/pim_util.c @@ -107,7 +107,8 @@ int pim_is_group_224_0_0_0_24(struct in_addr group_addr) struct prefix group; if (first) { - str2prefix("224.0.0.0/24", &group_224); + if (!str2prefix("224.0.0.0/24", &group_224)) + return 0; first = 0; } @@ -125,7 +126,8 @@ int pim_is_group_224_4(struct in_addr group_addr) struct prefix group; if (first) { - str2prefix("224.0.0.0/4", &group_all); + if (!str2prefix("224.0.0.0/4", &group_all)) + return 0; first = 0; }