summaryrefslogtreecommitdiff
path: root/usr/src/cmd/devfsadm/devfsadm.c
diff options
context:
space:
mode:
authorjg <none@none>2006-06-21 17:32:21 -0700
committerjg <none@none>2006-06-21 17:32:21 -0700
commit12d8cf2ac6616a37b1cd2ed7b1ae1e1eed6a5a6f (patch)
tree8c93fa69ad927fb47d40fb40c3b7b69338aa3577 /usr/src/cmd/devfsadm/devfsadm.c
parentbe5470241de51f62f45fcaa7a79ef44299b72117 (diff)
downloadillumos-joyent-12d8cf2ac6616a37b1cd2ed7b1ae1e1eed6a5a6f.tar.gz
6431523 devfsadm: lookup_disk_dev_name() may cause core-dump
Diffstat (limited to 'usr/src/cmd/devfsadm/devfsadm.c')
-rw-r--r--usr/src/cmd/devfsadm/devfsadm.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/usr/src/cmd/devfsadm/devfsadm.c b/usr/src/cmd/devfsadm/devfsadm.c
index c3904792e3..d368e03ad2 100644
--- a/usr/src/cmd/devfsadm/devfsadm.c
+++ b/usr/src/cmd/devfsadm/devfsadm.c
@@ -8116,10 +8116,10 @@ devlink_cb(di_devlink_t dl, void *arg)
if ((path = di_devlink_path(dl)) == NULL ||
(content = di_devlink_content(dl)) == NULL ||
- (x->dev_names[x->count] = strdup(path)) == NULL)
+ (x->dev_names[x->count] = s_strdup(path)) == NULL)
goto out;
- if ((x->link_contents[x->count] = strdup(content)) == NULL) {
+ if ((x->link_contents[x->count] = s_strdup(content)) == NULL) {
free(x->dev_names[x->count]);
goto out;
}
@@ -8163,7 +8163,7 @@ lookup_dev_name(char *phys_path, char **dev_name)
return (-1);
if (cb_arg.count > 0) {
- *dev_name = strdup(cb_arg.dev_names[0]);
+ *dev_name = s_strdup(cb_arg.dev_names[0]);
free_dev_names(&cb_arg);
if (*dev_name == NULL)
return (-1);
@@ -8196,7 +8196,7 @@ lookup_disk_dev_name(char *node_path)
for (i = 0; i < cb_arg.count; i++) {
if (strncmp(cb_arg.dev_names[i], DEV_RDSK,
sizeof (DEV_RDSK) - 1) == 0) {
- dev_name = strdup(cb_arg.dev_names[i]);
+ dev_name = s_strdup(cb_arg.dev_names[i]);
break;
}
}
@@ -8209,7 +8209,7 @@ lookup_disk_dev_name(char *node_path)
if (len2 >= len1 &&
strcmp(cb_arg.link_contents[i] + len2 - len1,
DISK_RAW_MINOR) == 0) {
- dev_name = strdup(cb_arg.dev_names[i]);
+ dev_name = s_strdup(cb_arg.dev_names[i]);
break;
}
}
@@ -8217,6 +8217,8 @@ lookup_disk_dev_name(char *node_path)
free_dev_names(&cb_arg);
+ if (dev_name == NULL)
+ return (NULL);
if (strlen(dev_name) == 0) {
free(dev_name);
return (NULL);