summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjsg <jsg@openbsd.org>2015-03-23 22:26:01 +0000
committerjsg <jsg@openbsd.org>2015-03-23 22:26:01 +0000
commit095d6d805ca173c729a47507ffc82df4474990d4 (patch)
treeb8083015796fd8c2978cd3c4efb496bf1317f01d
parentfix memory leaks in tempnam(3) error paths (diff)
downloadwireguard-openbsd-095d6d805ca173c729a47507ffc82df4474990d4.tar.xz
wireguard-openbsd-095d6d805ca173c729a47507ffc82df4474990d4.zip
Return an error if getting the config descriptor failed.
Avoids a NULL dereference encountered with a device I have. ok mpi@
-rw-r--r--sys/dev/usb/usb_subr.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/dev/usb/usb_subr.c b/sys/dev/usb/usb_subr.c
index b5bcc17cd6f..dfdeaf99cd0 100644
--- a/sys/dev/usb/usb_subr.c
+++ b/sys/dev/usb/usb_subr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: usb_subr.c,v 1.116 2014/12/21 12:04:01 mpi Exp $ */
+/* $OpenBSD: usb_subr.c,v 1.117 2015/03/23 22:26:01 jsg Exp $ */
/* $NetBSD: usb_subr.c,v 1.103 2003/01/10 11:19:13 augustss Exp $ */
/* $FreeBSD: src/sys/dev/usb/usb_subr.c,v 1.18 1999/11/17 22:33:47 n_hibma Exp $ */
@@ -1315,6 +1315,8 @@ usbd_get_cdesc(struct usbd_device *dev, int index, int *lenp)
if (index == USB_CURRENT_CONFIG_INDEX) {
tdesc = usbd_get_config_descriptor(dev);
+ if (tdesc == NULL)
+ return (NULL);
len = UGETW(tdesc->wTotalLength);
if (lenp)
*lenp = len;