From 561966a01f061123e6e4847f8bd662aa85b6f21f Mon Sep 17 00:00:00 2001 From: cw8466 <136645393+cw8466@users.noreply.github.com> Date: Sat, 1 Jul 2023 10:28:28 -0400 Subject: [PATCH] [posix] fix missing `nullptr` pointer check (#9179) Avoid segmentation fault for interfaces without link. --- src/posix/platform/infra_if.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/posix/platform/infra_if.cpp b/src/posix/platform/infra_if.cpp index 2b37ceff3..505d02570 100644 --- a/src/posix/platform/infra_if.cpp +++ b/src/posix/platform/infra_if.cpp @@ -73,7 +73,8 @@ bool otPlatInfraIfHasAddress(uint32_t aInfraIfIndex, const otIp6Address *aAddres { struct sockaddr_in6 *ip6Addr; - if (if_nametoindex(addr->ifa_name) != aInfraIfIndex || addr->ifa_addr->sa_family != AF_INET6) + if (if_nametoindex(addr->ifa_name) != aInfraIfIndex || addr->ifa_addr == nullptr || + addr->ifa_addr->sa_family != AF_INET6) { continue; } @@ -316,7 +317,8 @@ void InfraNetif::CountAddresses(otSysInfraNetIfAddressCounters &aAddressCounters { in6_addr *in6Addr; - if (strncmp(addr->ifa_name, mInfraIfName, sizeof(mInfraIfName)) != 0 || addr->ifa_addr->sa_family != AF_INET6) + if (strncmp(addr->ifa_name, mInfraIfName, sizeof(mInfraIfName)) != 0 || addr->ifa_addr == nullptr || + addr->ifa_addr->sa_family != AF_INET6) { continue; } @@ -348,7 +350,8 @@ bool InfraNetif::HasLinkLocalAddress(void) const { struct sockaddr_in6 *ip6Addr; - if (strncmp(addr->ifa_name, mInfraIfName, sizeof(mInfraIfName)) != 0 || addr->ifa_addr->sa_family != AF_INET6) + if (strncmp(addr->ifa_name, mInfraIfName, sizeof(mInfraIfName)) != 0 || addr->ifa_addr == nullptr || + addr->ifa_addr->sa_family != AF_INET6) { continue; }