diff options
author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2017-07-11 11:29:03 +0000 |
---|---|---|
committer | Jerry Jelinek <jerry.jelinek@joyent.com> | 2017-07-11 11:29:03 +0000 |
commit | ca281d9e312822244a34cc4039e01f352e1a66b3 (patch) | |
tree | e687ae4139abe1ae6fa89231319383ea0dec32fa /usr/src/lib | |
parent | 05841187c1299f61a17c813b58922e02b6432a3f (diff) | |
parent | d1e7d21548ce47b73fb16ec24a71987ddef57a0e (diff) | |
download | illumos-joyent-ca281d9e312822244a34cc4039e01f352e1a66b3.tar.gz |
[illumos-gate merge]
commit d1e7d21548ce47b73fb16ec24a71987ddef57a0e
8339 col: misleading-indentation
commit 51c62b7bcb67b1e65d7e2773b20f465cf58b91b2
8429 getallifaddrs dereferences invalid pointer causing SIGSEGV
commit 1ee1bcba6f9a17099e11b5bb0d1eeab71c729aa3
8459 i86pc: pci_tools.c variable might be clobbered
Diffstat (limited to 'usr/src/lib')
-rw-r--r-- | usr/src/lib/libsocket/inet/getifaddrs.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/usr/src/lib/libsocket/inet/getifaddrs.c b/usr/src/lib/libsocket/inet/getifaddrs.c index df6d4199d1..66dfedbd10 100644 --- a/usr/src/lib/libsocket/inet/getifaddrs.c +++ b/usr/src/lib/libsocket/inet/getifaddrs.c @@ -21,6 +21,7 @@ /* * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2017 RackTop Systems. */ #include <netdb.h> @@ -102,6 +103,14 @@ getallifaddrs(sa_family_t af, struct ifaddrs **ifap, int64_t flags) int sock6; int err; + /* + * Initialize ifap to NULL so we can safely call freeifaddrs + * on it in case of error. + */ + if (ifap == NULL) + return (EINVAL); + *ifap = NULL; + if ((sock4 = socket(AF_INET, SOCK_DGRAM, 0)) < 0) return (-1); if ((sock6 = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) { @@ -123,7 +132,6 @@ retry: */ prev = NULL; lifrp = buf; - *ifap = NULL; for (n = 0; n < numifs; n++, lifrp++) { /* Prepare for the ioctl call */ |