From b0eb9dcbfd586adf49296b0a2362296b6f8312f9 Mon Sep 17 00:00:00 2001 From: Igor Ryzhov Date: Thu, 5 Nov 2020 19:46:27 +0300 Subject: [PATCH] bfdd: fix possible null dereference bs->ifp may be null, so we should check it before dereferencing. Signed-off-by: Igor Ryzhov --- bfdd/bfd_packet.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bfdd/bfd_packet.c b/bfdd/bfd_packet.c index 5cc47d5a44..0a71c18a42 100644 --- a/bfdd/bfd_packet.c +++ b/bfdd/bfd_packet.c @@ -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; -- 2.39.5