Date: Fri, 21 Dec 2001 17:05:58 -0500 (EST) From: The Anarcat <anarcat@anarcat.dyndns.org> To: FreeBSD-gnats-submit@freebsd.org Cc: anarcat@anarcat.dyndns.org Subject: bin/33070: libdisk::Disk_Names() returns empty strings Message-ID: <20011221220558.8DEB020ACD@shall.anarcat.dyndns.org>
next in thread | raw e-mail | index | archive | help
>Number: 33070
>Category: bin
>Synopsis: libdisk::Disk_Names() returns empty strings
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Fri Dec 21 14:10:01 PST 2001
>Closed-Date:
>Last-Modified:
>Originator: The Anarcat
>Release: FreeBSD 4.4-STABLE i386
>Organization:
Nada, Inc.
>Environment:
System: FreeBSD shall.anarcat.dyndns.org 4.4-STABLE FreeBSD 4.4-STABLE #0: Fri Nov 16 12:57:38 EST 2001 anarcat@shall.anarcat.dyndns.org:/usr/obj/usr/src/sys/SHALL i386
>Description:
Some recent MFC broke Disk_Names() on -stable:
revision 1.50.2.13.2.1
date: 2001/09/18 15:16:21; author: murray; state: Exp; lines: +2 -2
MFS: Don't use kern.disks sysctl.
Makefile (rev 1.27.2.5)
disk.c (rev 1.50.2.14)
The diff is:
ndex: disk.c
===================================================================
RCS file: /home/ncvs/src/lib/libdisk/disk.c,v
retrieving revision 1.50.2.13
retrieving revision 1.50.2.13.2.1
diff -u -r1.50.2.13 -r1.50.2.13.2.1
--- disk.c 28 Aug 2001 03:45:47 -0000 1.50.2.13
+++ disk.c 18 Sep 2001 15:16:21 -0000 1.50.2.13.2.1
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return.
* Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $FreeBSD: src/lib/libdisk/disk.c,v 1.50.2.13 2001/08/28 03:45:47
nyan Exp $
+ * $FreeBSD: src/lib/libdisk/disk.c,v 1.50.2.13.2.1 2001/09/18 15:16:21
murray Exp $
*
*/
@@ -499,7 +499,7 @@
disks = malloc(sizeof *disks * (1 + MAX_NO_DISKS));
memset(disks,0,sizeof *disks * (1 + MAX_NO_DISKS));
-#ifndef PC98
+#if !defined(PC98) && !defined(KERN_DISKS_BROKEN)
error = sysctlbyname("kern.disks", NULL, &listsize, NULL, 0);
if (!error) {
disklist = (char *)malloc(listsize);
I do not understand why, but Disk_Names() returns a pointer to a list of
NULL strings. This is weird.
It definitly breaks libh's libdisk.
>How-To-Repeat:
#include <iostream>
extern "C" {
#include <sys/types.h>
#include <libdisk.h>
}
int main() {
char** names = ::Disk_Names();
cerr << "n: " << names << endl;
for (char **n = names; *n != NULL; n++) {
cerr << "disk" << *n << endl;
}
return 1;
}
Simply returns with "n: 0x..."
gdb also gives us the same sad stuff.
>Fix:
Back out the change.
>Release-Note:
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20011221220558.8DEB020ACD>
