From b72f79a92b7e858b0eccb6f65d85a6e16a6f0db8 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Thu, 10 Nov 2016 07:35:02 -0500 Subject: [PATCH] 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 --- pimd/pim_ifchannel.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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); } } -- 2.39.5