Module Name: src Committed By: snj Date: Sun May 3 22:39:50 UTC 2009
Modified Files: src/sys/kern [netbsd-5]: kern_drvctl.c Log Message: Pull up following revision(s) (requested by joerg in ticket #675): sys/kern/kern_drvctl.c: revision 1.24 Allow querying for root devices in the tree by specifying an empty device name. Ensure that l_devname is NUL-terminated and fail otherwise. OK cube@ To generate a diff of this commit: cvs rdiff -u -r1.19.6.2 -r1.19.6.3 src/sys/kern/kern_drvctl.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/kern/kern_drvctl.c diff -u src/sys/kern/kern_drvctl.c:1.19.6.2 src/sys/kern/kern_drvctl.c:1.19.6.3 --- src/sys/kern/kern_drvctl.c:1.19.6.2 Sat Apr 4 23:36:27 2009 +++ src/sys/kern/kern_drvctl.c Sun May 3 22:39:49 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_drvctl.c,v 1.19.6.2 2009/04/04 23:36:27 snj Exp $ */ +/* $NetBSD: kern_drvctl.c,v 1.19.6.3 2009/05/03 22:39:49 snj Exp $ */ /* * Copyright (c) 2004 @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_drvctl.c,v 1.19.6.2 2009/04/04 23:36:27 snj Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_drvctl.c,v 1.19.6.3 2009/05/03 22:39:49 snj Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -198,7 +198,11 @@ deviter_t di; int cnt = 0, idx, error = 0; - if ((d = device_find_by_xname(l->l_devname)) == NULL) + if (*l->l_devname == '\0') + d = (device_t)NULL; + else if (memchr(l->l_devname, 0, sizeof(l->l_devname)) == NULL) + return EINVAL; + else if ((d = device_find_by_xname(l->l_devname)) == NULL) return ENXIO; for (child = deviter_first(&di, 0); child != NULL;