Module Name: src Committed By: martin Date: Wed Dec 11 14:56:36 UTC 2019
Modified Files: src/sys/dev/usb [netbsd-9]: ugen.c Log Message: Pull up following revision(s) (requested by bouyer in ticket #544): sys/dev/usb/ugen.c: revision 1.148 reading usbdi.c it looks like usbd_get_config_descriptor() can actually return NULL, so check for this. I got NULL pointer dereference here with a device showing: [ 303.732632] ugen0: autoconfiguration error: setting configuration index 0 failed To generate a diff of this commit: cvs rdiff -u -r1.146 -r1.146.2.1 src/sys/dev/usb/ugen.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/dev/usb/ugen.c diff -u src/sys/dev/usb/ugen.c:1.146 src/sys/dev/usb/ugen.c:1.146.2.1 --- src/sys/dev/usb/ugen.c:1.146 Sun May 5 03:17:54 2019 +++ src/sys/dev/usb/ugen.c Wed Dec 11 14:56:36 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ugen.c,v 1.146 2019/05/05 03:17:54 mrg Exp $ */ +/* $NetBSD: ugen.c,v 1.146.2.1 2019/12/11 14:56:36 martin Exp $ */ /* * Copyright (c) 1998, 2004 The NetBSD Foundation, Inc. @@ -37,7 +37,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ugen.c,v 1.146 2019/05/05 03:17:54 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ugen.c,v 1.146.2.1 2019/12/11 14:56:36 martin Exp $"); #ifdef _KERNEL_OPT #include "opt_compat_netbsd.h" @@ -1406,6 +1406,8 @@ ugen_get_cdesc(struct ugen_softc *sc, in if (index == USB_CURRENT_CONFIG_INDEX) { tdesc = usbd_get_config_descriptor(sc->sc_udev); + if (tdesc == NULL) + return NULL; len = UGETW(tdesc->wTotalLength); if (lenp) *lenp = len;