From 6d40d0ca55c3229cfe6573b12376eba2ea0906df Mon Sep 17 00:00:00 2001 From: scottl Date: Sat, 7 Jun 2003 20:02:56 +0000 Subject: Sanity check the list obtained from the kern.disks sysctl so that Disk_Names() doesn't get fooled into returning a bogus list. This should fix sysinstall from segfaulting when no disk devices are present. --- lib/libdisk/disk.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'lib/libdisk') diff --git a/lib/libdisk/disk.c b/lib/libdisk/disk.c index c750c2b..ae79d29 100644 --- a/lib/libdisk/disk.c +++ b/lib/libdisk/disk.c @@ -470,6 +470,9 @@ Disk_Names() return NULL; } + if (listsize == 0) + return (NULL); + disks = malloc(sizeof *disks * (1 + MAX_NO_DISKS)); if (disks == NULL) return NULL; @@ -481,7 +484,7 @@ Disk_Names() memset(disks,0,sizeof *disks * (1 + MAX_NO_DISKS)); memset(disklist, 0, listsize + 1); error = sysctlbyname("kern.disks", disklist, &listsize, NULL, 0); - if (error) { + if (error || disklist[0] == 0) { free(disklist); free(disks); return NULL; -- cgit v1.1