From 2e8345c139470430c34c1fa18521ba7a566b89ad Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Wed, 10 May 2017 19:54:26 -0400 Subject: [PATCH] pimd: Error check str2prefix Signed-off-by: Donald Sharp --- pimd/pim_rp.c | 10 ++++++++-- pimd/pim_util.c | 6 ++++-- 2 files changed, 12 insertions(+), 4 deletions(-) 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; } -- 2.39.5