diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-12-09 00:16:11 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-12-09 00:16:11 +0000 |
commit | c40b05b4c4226b2c4323a9ba5b096377931682ef (patch) | |
tree | a94cfc05d1f4d350cd17a8773e566d11fc275e73 | |
parent | 73723d710b6f1868a20f8eb36383795524f516ad (diff) | |
download | uClibc-alpine-c40b05b4c4226b2c4323a9ba5b096377931682ef.tar.bz2 uClibc-alpine-c40b05b4c4226b2c4323a9ba5b096377931682ef.tar.xz |
getaddrinfo: runp->ifa_addr indeed can be NULL, don't dereference it
ifaddrs.c: cosmetics, no code changes
-rw-r--r-- | libc/inet/getaddrinfo.c | 2 | ||||
-rw-r--r-- | libc/inet/ifaddrs.c | 5 |
2 files changed, 3 insertions, 4 deletions
diff --git a/libc/inet/getaddrinfo.c b/libc/inet/getaddrinfo.c index b1aae1281..25a5b8022 100644 --- a/libc/inet/getaddrinfo.c +++ b/libc/inet/getaddrinfo.c @@ -189,6 +189,8 @@ static unsigned __check_pf(void) } for (runp = ifa; runp != NULL; runp = runp->ifa_next) { + if (runp->ifa_addr == NULL) + continue; #if defined __UCLIBC_HAS_IPV4__ if (runp->ifa_addr->sa_family == PF_INET) seen |= SEEN_IPV4; diff --git a/libc/inet/ifaddrs.c b/libc/inet/ifaddrs.c index 3afc6b923..1d54d5123 100644 --- a/libc/inet/ifaddrs.c +++ b/libc/inet/ifaddrs.c @@ -452,10 +452,7 @@ getifaddrs (struct ifaddrs **ifap) /* Allocate memory for all entries we have and initialize next pointer. */ - ifas = (struct ifaddrs_storage *) calloc (1, - (newlink + newaddr) - * sizeof (struct ifaddrs_storage) - + ifa_data_size); + ifas = calloc (1, (newlink + newaddr) * sizeof (ifas[0]) + ifa_data_size); if (ifas == NULL) { result = -1; |