Print this page
5552 libsun_sas leaks devids
Reviewed by: Alek Pinchuk <alek.pinchuk@nexenta.com>
Reviewed by: Jean McCormack <jean.mccormack@nexenta.com>
Reviewed by: Marcel Telka <marcel.telka@nexenta.com>
@@ -20,10 +20,11 @@
*/
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
+ * Copyright 2015 Nexenta Systems, Inc. All rights reserved.
*/
#include <sun_sas.h>
#include <sys/types.h>
#include <netinet/in.h>
@@ -585,23 +586,26 @@
&propStringData) != -1) {
if (devid_str_decode(propStringData, &devid, NULL) != -1) {
guidStr = devid_to_guid(devid);
if (guidStr != NULL) {
(void) strlcpy(mapping_ptr->entry.LUID.buffer,
- guidStr, 256);
+ guidStr,
+ sizeof (mapping_ptr->entry.LUID.buffer));
devid_free_guid(guidStr);
} else {
/*
* Note:
* if logical unit associated page 83 id
* descriptor is not avaialble for the device
- * devid_to_guid returns NULl with errno 0.
+ * devid_to_guid returns NULL with errno 0.
*/
log(LOG_DEBUG, ROUTINE,
"failed to get devid guid on (%s) : %s",
devpath, strerror(errno));
}
+
+ devid_free(devid);
} else {
/*
* device may not support proper page 83 id descriptor.
* leave LUID attribute to NULL and continue.
*/
@@ -1003,20 +1007,22 @@
} else {
/*
* Note:
* if logical unit associated page 83 id
* descriptor is not avaialble for the device
- * devid_to_guid returns NULl with errno 0.
+ * devid_to_guid returns NULL with errno 0.
*/
log(LOG_DEBUG, ROUTINE,
"failed to get devid guid on (%s)",
" associated with path(%s) : %s",
clientdevpath,
pathdevpath ? pathdevpath :
"(missing device path)",
strerror(errno));
}
+
+ devid_free(devid);
} else {
/*
* device may not support proper page 83 id descriptor.
* leave LUID attribute to NULL and continue.
*/