mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-05-24 10:39:52 +00:00
![]() Some drivers (such as the vub300 MMC driver) expect usb_string() to return a properly NUL-terminated string, even when an error occurs. (In fact, vub300's probe routine doesn't bother to check the return code from usb_string().) When the driver goes on to use an unterminated string, it leads to kernel errors such as stack-out-of-bounds, as found by the syzkaller USB fuzzer. An out-of-range string index argument is not at all unlikely, given that some devices don't provide string descriptors and therefore list 0 as the value for their string indexes. This patch makes usb_string() return a properly terminated empty string along with the -EINVAL error code when an out-of-range index is encountered. And since a USB string index is a single-byte value, indexes >= 256 are just as invalid as values of 0 or below. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Reported-by: syzbot+b75b85111c10b8d680f1@syzkaller.appspotmail.com CC: <stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
||
---|---|---|
.. | ||
buffer.c | ||
config.c | ||
devices.c | ||
devio.c | ||
driver.c | ||
endpoint.c | ||
file.c | ||
generic.c | ||
hcd-pci.c | ||
hcd.c | ||
hub.c | ||
hub.h | ||
Kconfig | ||
ledtrig-usbport.c | ||
Makefile | ||
message.c | ||
notify.c | ||
of.c | ||
otg_whitelist.h | ||
phy.c | ||
phy.h | ||
port.c | ||
quirks.c | ||
sysfs.c | ||
urb.c | ||
usb-acpi.c | ||
usb.c | ||
usb.h |