From: Donald Sharp Date: Thu, 10 Nov 2016 12:35:02 +0000 (-0500) Subject: pimd: Fix possible crash when leaving a channel X-Git-Tag: frr-3.0-branchpoint~64^2~10^2~111 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=b72f79a92b7e858b0eccb6f65d85a6e16a6f0db8;p=mirror%2Ffrr.git pimd: Fix possible crash when leaving a channel When leaving a channel, there exists a possibility that we have not created the channel oil yet. Ensure that we have channel oil before dereferencing Ticket: CM-13522 Signed-off-by: Donald Sharp --- diff --git a/pimd/pim_ifchannel.c b/pimd/pim_ifchannel.c index ca1f2f6b42..b3b2748359 100644 --- a/pimd/pim_ifchannel.c +++ b/pimd/pim_ifchannel.c @@ -905,7 +905,7 @@ void pim_ifchannel_local_membership_del(struct interface *ifp, buff, ifp->name, pim_str_sg_dump (&child->sg)); } - if (!pim_upstream_evaluate_join_desired (child)) + if (c_oil && !pim_upstream_evaluate_join_desired (child)) pim_channel_del_oif (c_oil, ifp, PIM_OIF_FLAG_PROTO_PIM); /* @@ -913,7 +913,7 @@ void pim_ifchannel_local_membership_del(struct interface *ifp, * has output here then the *,G was supplying the implied * if channel. So remove it. */ - if (!chchannel && c_oil->oil.mfcc_ttls[pim_ifp->mroute_vif_index]) + if (!chchannel && c_oil && c_oil->oil.mfcc_ttls[pim_ifp->mroute_vif_index]) pim_channel_del_oif (c_oil, ifp, PIM_OIF_FLAG_PROTO_PIM); } }