Module Name: src Committed By: riastradh Date: Sun Apr 17 13:16:52 UTC 2022
Modified Files: src/sys/dev/usb: usbdi_util.c Log Message: usbdi(9): Make usb_desc_iter_next_interface reject truncated descs. Currently callers have to check whether the descriptor is truncated, which is willy. To generate a diff of this commit: cvs rdiff -u -r1.86 -r1.87 src/sys/dev/usb/usbdi_util.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/usbdi_util.c diff -u src/sys/dev/usb/usbdi_util.c:1.86 src/sys/dev/usb/usbdi_util.c:1.87 --- src/sys/dev/usb/usbdi_util.c:1.86 Sun Apr 17 13:16:43 2022 +++ src/sys/dev/usb/usbdi_util.c Sun Apr 17 13:16:52 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: usbdi_util.c,v 1.86 2022/04/17 13:16:43 riastradh Exp $ */ +/* $NetBSD: usbdi_util.c,v 1.87 2022/04/17 13:16:52 riastradh Exp $ */ /* * Copyright (c) 1998, 2012 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: usbdi_util.c,v 1.86 2022/04/17 13:16:43 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: usbdi_util.c,v 1.87 2022/04/17 13:16:52 riastradh Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" @@ -769,7 +769,11 @@ usb_desc_iter_next_interface(usbd_desc_i usb_desc_iter_next(iter); } - return (const usb_interface_descriptor_t *)usb_desc_iter_next(iter); + if ((desc = usb_desc_iter_next(iter)) == NULL || + desc->bLength < sizeof(usb_interface_descriptor_t)) + return NULL; + KASSERT(desc->bDescriptorType == UDESC_INTERFACE); + return (const usb_interface_descriptor_t *)desc; } /*