From ddcbb6fa806a7df51c7a83f51dc0fe157b97628e Mon Sep 17 00:00:00 2001 From: Andy Green Date: Wed, 29 Jul 2020 11:14:37 +0100 Subject: [PATCH] lws_interface_to_sa: confirm getifaddrs worked We don't actually check that it provided results... return diags and that the interface is usable if it didn't. Also explicitly check ifa_name for being NULL, since it seems some platforms can do that even with an ifa_addr (thanks to Jed) --- lib/plat/unix/unix-sockets.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/plat/unix/unix-sockets.c b/lib/plat/unix/unix-sockets.c index fa590f080..1fce49874 100644 --- a/lib/plat/unix/unix-sockets.c +++ b/lib/plat/unix/unix-sockets.c @@ -203,9 +203,13 @@ lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr, struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)addr; #endif - getifaddrs(&ifr); + if (getifaddrs(&ifr)) { + lwsl_err("%s: unable to getifaddrs: errno %d\n", __func__, errno); + + return LWS_ITOSA_USABLE; + } for (ifc = ifr; ifc != NULL && rc; ifc = ifc->ifa_next) { - if (!ifc->ifa_addr) + if (!ifc->ifa_addr || !ifc->ifa_name) continue; lwsl_debug(" interface %s vs %s (fam %d) ipv6 %d\n",