]> git.proxmox.com Git - mirror_frr.git/commitdiff
pimd: Fix use of value after free
authorDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 1 Mar 2017 12:44:13 +0000 (07:44 -0500)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 1 Mar 2017 13:36:09 +0000 (08:36 -0500)
Fix the usage of source after it has
been explicitly free'd.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_igmpv3.c

index fb65665135c8d631c87d9c0641c578f1fdce7418..8c7083d83df21b85b116834104527292db169564 100644 (file)
@@ -348,6 +348,7 @@ static void source_channel_oil_detach(struct igmp_source *source)
 void igmp_source_delete(struct igmp_source *source)
 {
   struct igmp_group *group;
+  struct in_addr src;
 
   group = source->source_group;
 
@@ -388,12 +389,14 @@ void igmp_source_delete(struct igmp_source *source)
   */
   listnode_delete(group->group_source_list, source);
 
+  src.s_addr = source->source_addr.s_addr;
   igmp_source_free(source);
+
   /* Group source list is empty and current source is * then
    *,G group going away so do not trigger start */
   if (group->group_filtermode_isexcl &&
       (listcount (group->group_source_list) != 0) &&
-      source->source_addr.s_addr != INADDR_ANY)
+      src.s_addr != INADDR_ANY)
     {
       group_exclude_fwd_anysrc_ifempty (group);
     }