]> Git Repo - qemu.git/commitdiff
usb-host: don't dereference invalid iovecs
authorGerd Hoffmann <[email protected]>
Thu, 19 Apr 2012 11:35:07 +0000 (13:35 +0200)
committerGerd Hoffmann <[email protected]>
Thu, 26 Apr 2012 10:21:16 +0000 (12:21 +0200)
usb-host assumes the first iovec element is always valid.
In case of a zero-length packet this isn't true though.

Signed-off-by: Gerd Hoffmann <[email protected]>
hw/usb/host-linux.c

index 061a1b78252ccd95473c2faf2faecb2012577eae..c3684c8f92e6287ae6f5be85499518dbcf8c9983 100644 (file)
@@ -884,16 +884,16 @@ static int usb_host_handle_data(USBDevice *dev, USBPacket *p)
     }
 
     v = 0;
-    prem = p->iov.iov[v].iov_len;
-    pbuf = p->iov.iov[v].iov_base;
+    prem = 0;
+    pbuf = NULL;
     rem = p->iov.size;
     while (rem) {
         if (prem == 0) {
-            v++;
             assert(v < p->iov.niov);
             prem = p->iov.iov[v].iov_len;
             pbuf = p->iov.iov[v].iov_base;
             assert(prem <= rem);
+            v++;
         }
         aurb = async_alloc(s);
         aurb->packet = p;
This page took 0.029002 seconds and 4 git commands to generate.