]> git.puffer.fish Git - matthieu/frr.git/commitdiff
pimd: Prevent crash of pim when auto-rp's socket is not initialized
authorJafar Al-Gharaibeh <jafar@atcorp.com>
Wed, 4 Dec 2024 20:57:13 +0000 (14:57 -0600)
committerJafar Al-Gharaibeh <jafar@atcorp.com>
Wed, 4 Dec 2024 20:57:13 +0000 (14:57 -0600)
If the socket associated with the auto-rp fails to initialize then
the memory for the auto-rp is just dropped on the floor.  Additionally
any type of attempt at using the feature will just cause pimd to crash,
when the pointer is derefed.  Since it is derefed all over the place
without checking.

Clearly if you cannot bind/use the socket let's allow continuation.

Fixes: #17540
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
pimd/pim_autorp.c

index df4f809b3da229fa1d67e14b90ff152fb0a1a541..a07bd4ab3af7215b7dcfcb58ca6263569f28d7bb 100644 (file)
@@ -1014,12 +1014,13 @@ void pim_autorp_init(struct pim_instance *pim)
        autorp->announce_interval = DEFAULT_ANNOUNCE_INTERVAL;
        autorp->announce_holdtime = DEFAULT_ANNOUNCE_HOLDTIME;
 
+       pim->autorp = autorp;
+
        if (!pim_autorp_socket_enable(autorp)) {
-               zlog_err("%s: AutoRP failed to initialize", __func__);
+               zlog_err("%s: AutoRP failed to initialize, feature will not work correctly", __func__);
                return;
        }
 
-       pim->autorp = autorp;
        if (PIM_DEBUG_AUTORP)
                zlog_debug("%s: AutoRP Initialized", __func__);