]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bfdd: fix possible null dereference
authorIgor Ryzhov <iryzhov@nfware.com>
Thu, 5 Nov 2020 16:46:27 +0000 (19:46 +0300)
committerIgor Ryzhov <iryzhov@nfware.com>
Thu, 5 Nov 2020 16:46:27 +0000 (19:46 +0300)
bs->ifp may be null, so we should check it before dereferencing.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
bfdd/bfd_packet.c

index 5cc47d5a4408a1f3aa8eb56c822aeec28bebd534..0a71c18a42972afabf26d51d9a8dfeda552b7896 100644 (file)
@@ -80,7 +80,7 @@ int _ptm_bfd_send(struct bfd_session *bs, uint16_t *port, const void *data,
                memset(&sin6, 0, sizeof(sin6));
                sin6.sin6_family = AF_INET6;
                memcpy(&sin6.sin6_addr, &bs->key.peer, sizeof(sin6.sin6_addr));
-               if (IN6_IS_ADDR_LINKLOCAL(&sin6.sin6_addr))
+               if (bs->ifp && IN6_IS_ADDR_LINKLOCAL(&sin6.sin6_addr))
                        sin6.sin6_scope_id = bs->ifp->ifindex;
 
                sin6.sin6_port =
@@ -1051,7 +1051,7 @@ int bp_peer_socketv6(const struct bfd_session *bs)
        sin6.sin6_len = sizeof(sin6);
 #endif /* HAVE_STRUCT_SOCKADDR_SA_LEN */
        memcpy(&sin6.sin6_addr, &bs->key.local, sizeof(sin6.sin6_addr));
-       if (IN6_IS_ADDR_LINKLOCAL(&sin6.sin6_addr))
+       if (bs->ifp && IN6_IS_ADDR_LINKLOCAL(&sin6.sin6_addr))
                sin6.sin6_scope_id = bs->ifp->ifindex;
 
        pcount = 0;