]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Prevent crash when receiving register message when the RP() is unknown 14336/head
authorDonald Sharp <sharpd@nvidia.com>
Tue, 29 Aug 2023 18:59:34 +0000 (14:59 -0400)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Fri, 1 Sep 2023 13:39:58 +0000 (13:39 +0000)
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)

pimd/pim_register.c

index b5d9df6f2ac85dc0ed14dadaca10b296378b9751..9696a76fc5aea0d28530fa3cf9d739dcaa9832ce 100644 (file)
@@ -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;