diff options
| author | Jafar Al-Gharaibeh <jafar@atcorp.com> | 2023-09-01 22:19:09 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-01 22:19:09 -0500 |
| commit | b798bfefb453dec02095dbb92bd29964a05324a5 (patch) | |
| tree | a252da76b7da26785722fd7ee1fa1381124427ce | |
| parent | dd54b4a3ade14667d8391bdfa1079d5dffe5ae37 (diff) | |
| parent | bbbe8b94c00036bee6ac56b74dd42decf43e7ea6 (diff) | |
Merge pull request #14338 from FRRouting/mergify/bp/stable/8.5/pr-14294
pimd: Prevent crash when receiving register message when the RP() is … (backport #14294)
| -rw-r--r-- | pimd/pim_register.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/pimd/pim_register.c b/pimd/pim_register.c index b62c646c3d..f075b220df 100644 --- a/pimd/pim_register.c +++ b/pimd/pim_register.c @@ -507,6 +507,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) @@ -615,7 +616,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; |
