summaryrefslogtreecommitdiff
path: root/usr/src/lib
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2017-07-11 11:29:03 +0000
committerJerry Jelinek <jerry.jelinek@joyent.com>2017-07-11 11:29:03 +0000
commitca281d9e312822244a34cc4039e01f352e1a66b3 (patch)
treee687ae4139abe1ae6fa89231319383ea0dec32fa /usr/src/lib
parent05841187c1299f61a17c813b58922e02b6432a3f (diff)
parentd1e7d21548ce47b73fb16ec24a71987ddef57a0e (diff)
downloadillumos-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.c10
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 */