aboutsummaryrefslogtreecommitdiff
path: root/usb-linux.c
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2011-05-31 11:35:22 +0200
committerGerd Hoffmann <kraxel@redhat.com>2011-06-14 12:56:49 +0200
commit130314f83dc43fc3cc2f431d8cfa1595209673fe (patch)
treef73d8f41f5a574ee17d607f74ac6114f7e33f90a /usb-linux.c
parent61c1117f08f4ed6f7e5cfa59cc9e02cf19c8f92d (diff)
downloadqemu-130314f83dc43fc3cc2f431d8cfa1595209673fe.zip
qemu-130314f83dc43fc3cc2f431d8cfa1595209673fe.tar.gz
qemu-130314f83dc43fc3cc2f431d8cfa1595209673fe.tar.bz2
usb-linux: Ensure devep != 0
So that we don't index endp_table with a negative index. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'usb-linux.c')
-rw-r--r--usb-linux.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/usb-linux.c b/usb-linux.c
index feb4d36..2e0495e 100644
--- a/usb-linux.c
+++ b/usb-linux.c
@@ -1029,6 +1029,11 @@ static int usb_linux_update_endp_table(USBHostDevice *s)
}
devep = descriptors[i + 2];
+ if ((devep & 0x0f) == 0) {
+ fprintf(stderr, "usb-linux: invalid ep descriptor, ep == 0\n");
+ return 1;
+ }
+
switch (descriptors[i + 3] & 0x3) {
case 0x00:
type = USBDEVFS_URB_TYPE_CONTROL;