linux_dsm_epyc7002/drivers/usb/misc
Xiao Han 9c6256a5e7 usb: misc: ftdi-elan: Fix off-by-one memory corruptions
This patch fixes fives off-by-one bugs in the ftdi-elan driver code. The
bug can be triggered by plugging a USB adapter for CardBus 3G cards (model
U132 manufactured by Elan Digital Systems, Ltd), causing a kernel panic.
The fix was tested on Ubuntu 14.04.4 with 4.7.0-rc14.2.0-27-generic+ and
4.4.0-22-generic+ kernel. In the ftdi_elan_synchronize function, an
off-by-one memory corruption occurs when packet_bytes is equal or bigger
than m. After having read m bytes, that is bytes_read is equal to m, "
..\x00" is still copied to the stack variable causing an out bounds write
of 4 bytes, which overwrites the stack canary and results in a kernel
panic.

This off-by-one requires physical access to the machine. It is not
exploitable since we have no control on the overwritten data.  Similar
off-by-one bugs have been observed in 4 other functions:
ftdi_elan_stuck_waiting, ftdi_elan_read, ftdi_elan_edset_output and
ftdi_elan_flush_input_fifo.

Reported-by: Alex Palesandro <palexster@gmail.com>
Signed-off-by: Xiao Han <xiao.han@orange.fr>
Tested-by: Paul Chaignon <pchaigno@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-08-09 15:45:59 +02:00
..
sisusbvga tty: vt, convert more macros to functions 2016-06-25 09:04:48 -07:00
adutux.c
appledisplay.c
chaoskey.c hwrng: chaoskey - Fix URB warning due to timeout on Alea 2016-06-07 18:42:44 +08:00
cypress_cy7c63.c
cytherm.c
ehset.c
emi26.c
emi62.c
ezusb.c
ftdi-elan.c usb: misc: ftdi-elan: Fix off-by-one memory corruptions 2016-08-09 15:45:59 +02:00
idmouse.c USB: idmouse.c: Put the interface on error 2016-03-03 19:44:06 -08:00
iowarrior.c USB: iowarrior: fix oops with malicious USB descriptors 2016-03-18 09:19:02 -07:00
isight_firmware.c
Kconfig Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid 2016-07-28 14:30:16 -07:00
ldusb.c
legousbtower.c
lvstest.c
Makefile Merge branch 'for-4.8/hid-led' into for-linus 2016-07-28 10:49:23 +02:00
rio500_usb.h
rio500.c
trancevibrator.c
ucsi.c usb: Add driver for UCSI 2016-04-29 15:29:18 -07:00
ucsi.h usb: Add driver for UCSI 2016-04-29 15:29:18 -07:00
usb3503.c usb: misc: usb3503: Clean up on driver unbind 2016-06-07 22:19:59 -07:00
usb_u132.h
usblcd.c
usbsevseg.c
usbtest.c usb: misc: usbtest: usbtest_do_ioctl may return positive integer 2016-08-09 15:45:59 +02:00
uss720.c
yurex.c