From fbde1ba5b8dd77e526c8147ea14bc65ae2e26326 Mon Sep 17 00:00:00 2001 From: Jeroen Koekkoek Date: Fri, 19 Oct 2018 17:50:13 +0200 Subject: [PATCH] Do not stop interface iteration if address is NULL Signed-off-by: Jeroen Koekkoek --- src/os/src/posix/os_platform_ifaddrs.c | 28 ++++++++++++++------------ 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/os/src/posix/os_platform_ifaddrs.c b/src/os/src/posix/os_platform_ifaddrs.c index 63aeec8..c31f69c 100644 --- a/src/os/src/posix/os_platform_ifaddrs.c +++ b/src/os/src/posix/os_platform_ifaddrs.c @@ -71,23 +71,25 @@ os_getifaddrs( ifa = ifa_root = NULL; for (sys_ifa = sys_ifa_root; - sys_ifa != NULL && sys_ifa->ifa_addr != NULL && err == 0; + sys_ifa != NULL && err == 0; sys_ifa = sys_ifa->ifa_next) { sa = sys_ifa->ifa_addr; - use = (afs == NULL); - for (int i = 0; !use && afs[i] != 0; i++) { - use = (sa->sa_family == afs[i]); - } + if (sa != NULL) { + use = (afs == NULL); + for (int i = 0; !use && afs[i] != 0; i++) { + use = (sa->sa_family == afs[i]); + } - if (use) { - err = copyaddr(&ifa_next, sys_ifa); - if (err == 0) { - if (ifa == NULL) { - ifa = ifa_root = ifa_next; - } else { - ifa->next = ifa_next; - ifa = ifa_next; + if (use) { + err = copyaddr(&ifa_next, sys_ifa); + if (err == 0) { + if (ifa == NULL) { + ifa = ifa_root = ifa_next; + } else { + ifa->next = ifa_next; + ifa = ifa_next; + } } } }