summaryrefslogtreecommitdiff
path: root/usr/src/lib/libipadm
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2015-01-05 14:25:10 +0000
committerJerry Jelinek <jerry.jelinek@joyent.com>2015-01-05 14:25:10 +0000
commit74062ae5aace32d0cf69986fceedef7334b08399 (patch)
treec1ae04af03575d602dd723cdc7c387a65a912226 /usr/src/lib/libipadm
parent0173c3089b5d2cc973f4453ad6410855e13ad28a (diff)
parentad69a33458cf73ee14857d57799cf686946e0b88 (diff)
downloadillumos-joyent-74062ae5aace32d0cf69986fceedef7334b08399.tar.gz
[illumos-gate merge]
commit ad69a33458cf73ee14857d57799cf686946e0b88 5491 libipadm`i_ipadm_init_ifs() calls free() on bogus memory address commit 4076b1bf41cfd9f968a33ed54a7ae76d9e996fe8 5445 Add more visibility via arcstats; specifically arc_state_t stats and differentiate between "data" and "metadata"
Diffstat (limited to 'usr/src/lib/libipadm')
-rw-r--r--usr/src/lib/libipadm/common/libipadm.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/usr/src/lib/libipadm/common/libipadm.c b/usr/src/lib/libipadm/common/libipadm.c
index e897771556..068c8d6535 100644
--- a/usr/src/lib/libipadm/common/libipadm.c
+++ b/usr/src/lib/libipadm/common/libipadm.c
@@ -18,9 +18,11 @@
*
* CDDL HEADER END
*/
+
/*
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright 2014, Joyent, Inc. All rights reserved.
+ * Copyright 2014 Nexenta Systems, Inc. All rights reserved.
*/
#include <stdio.h>
@@ -815,14 +817,14 @@ i_ipadm_init_ifs(ipadm_handle_t iph, const char *ifs, nvlist_t **allifs)
status = ipadm_errno2status(err);
goto done;
}
- nvlsize = rvalp->ir_nvlsize;
- nvlbuf = (char *)rvalp + sizeof (ipmgmt_get_rval_t);
/*
- * nvlbuf contains a list of nvlists, each of which represents
- * configuration information for the given interface(s)
+ * Daemon reply pointed to by rvalp contains ipmgmt_get_rval_t structure
+ * followed by a list of packed nvlists, each of which represents
+ * configuration information for the given interface(s).
*/
- err = nvlist_unpack(nvlbuf, nvlsize, allifs, NV_ENCODE_NATIVE);
+ err = nvlist_unpack((char *)rvalp + sizeof (ipmgmt_get_rval_t),
+ rvalp->ir_nvlsize, allifs, NV_ENCODE_NATIVE);
if (err != 0)
status = ipadm_errno2status(err);
done: