Skip to content
  • Jim Paris's avatar
    usb-linux.c: fix buffer overflow · c4c0e236
    Jim Paris authored
    In usb-linux.c:usb_host_handle_control, we pass a 1024-byte buffer and
    length to the kernel.  However, the length was provided by the caller
    of dev->handle_packet, and is not checked, so the kernel might provide
    too much data and overflow our buffer.
    
    For example, hw/usb-uhci.c could set the length to 2047.
    hw/usb-ohci.c looks like it might go up to 4096 or 8192.
    
    This causes a qemu crash, as reported here:
      http://www.mail-archive.com/kvm@vger.kernel.org/msg18447.html
    
    
    
    This patch increases the usb-linux.c buffer size to 2048 to fix the
    specific device reported, and adds a check to avoid the overflow in
    any case.
    
    Signed-off-by: default avatarJim Paris <jim@jtan.com>
    Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
    c4c0e236