summaryrefslogtreecommitdiff
path: root/sys/dev/usb
diff options
context:
space:
mode:
authormartin <martin@NetBSD.org>2019-12-11 14:56:36 +0000
committermartin <martin@NetBSD.org>2019-12-11 14:56:36 +0000
commitbb4471f175b93dfde5376a10d47fff622443244f (patch)
treee12c72d83a19cdf410e37834ce8775dcff81dbd1 /sys/dev/usb
parent3021974b87a2bb30d1cb0e0e3338a0d68fe41770 (diff)
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
Diffstat (limited to 'sys/dev/usb')
-rw-r--r--sys/dev/usb/ugen.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/dev/usb/ugen.c b/sys/dev/usb/ugen.c
index 14dc2dcf4bd..0ea8f302195 100644
--- a/sys/dev/usb/ugen.c
+++ b/sys/dev/usb/ugen.c
@@ -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, int index, int *lenp)
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;