libusb before version 1.0.30 contains a one-byte out-of-bounds read vulnerability in parseiadarray() in descriptor.c that allows attackers to trigger a denial of service by supplying a malformed USB descriptor whose bLength equals size minus one, causing the bounds check to use the original buffer size instead of the remaining size. Attackers in virtualized environments with USB passthrough can supply crafted descriptors through libusbgetactiveinterfaceassociationdescriptors or libusbgetinterfaceassociation_descriptors to read one byte past the end of the malloc allocation, resulting in a denial of service.