]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Error check str2prefix
authorDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 10 May 2017 23:54:26 +0000 (19:54 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 24 Jul 2017 17:51:34 +0000 (13:51 -0400)
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_rp.c
pimd/pim_util.c

index 6ce07d6adc40137c16608ed2afc5347b41f17c08..4a88e8f484e1fdb77471c19356349417ac85f24f 100644 (file)
@@ -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);
 
                /*
index c2e4b2a4625ff8f466226e7ce11641d096f764f7..820117a03a46ace6962bc47c452dd26d1de6bb7c 100644 (file)
@@ -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;
        }