summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@nvidia.com>2023-08-29 14:59:34 -0400
committerMergify <37929162+mergify[bot]@users.noreply.github.com>2023-09-01 13:39:58 +0000
commitd51a97434b5cdc6aca96bcf8b202079e39dd62cf (patch)
tree4e955dc5208f5eb72a24cbbbb411c20466fceb68
parent77b16f55a29ed740a64cd57a7c2db3683d541455 (diff)
pimd: Prevent crash when receiving register message when the RP() is unknown
When receiving a register message for a Group, that the group has no associated RP specified. Prevent a crash from happening. Signed-off-by: Donald Sharp <sharpd@nvidia.com> (cherry picked from commit 54aa0bf6f294bd3a722d1707aa071ce97aa09a22)
-rw-r--r--pimd/pim_register.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/pimd/pim_register.c b/pimd/pim_register.c
index b5d9df6f2a..9696a76fc5 100644
--- a/pimd/pim_register.c
+++ b/pimd/pim_register.c
@@ -494,6 +494,7 @@ int pim_register_recv(struct interface *ifp, pim_addr dest_addr,
struct pim_interface *pim_ifp = ifp->info;
struct pim_instance *pim = pim_ifp->pim;
pim_addr rp_addr;
+ struct pim_rpf *rpg;
if (pim_ifp->pim_passive_enable) {
if (PIM_DEBUG_PIM_PACKETS)
@@ -602,7 +603,14 @@ int pim_register_recv(struct interface *ifp, pim_addr dest_addr,
}
}
- rp_addr = (RP(pim, sg.grp))->rpf_addr;
+ rpg = RP(pim, sg.grp);
+ if (!rpg) {
+ zlog_warn("%s: Received Register Message %pSG from %pPA on %s where the RP could not be looked up",
+ __func__, &sg, &src_addr, ifp->name);
+ return 0;
+ }
+
+ rp_addr = rpg->rpf_addr;
if (i_am_rp && (!pim_addr_cmp(dest_addr, rp_addr))) {
sentRegisterStop = 0;