hw: usb: hcd-ohci: check len and frame_number variables
hw: usb: hcd-ohci: check len and frame_number variables

While servicing the OHCI transfer descriptors(TD), OHCI host
controller derives variables 'start_addr', 'end_addr', 'len'
etc. from values supplied by the host controller driver.
Host controller driver may supply values such that using
above variables leads to out-of-bounds access issues.
Add checks to avoid them.

AddressSanitizer: stack-buffer-overflow on address 0x7ffd53af76a0
  READ of size 2 at 0x7ffd53af76a0 thread T0
  #0 ohci_service_iso_td ../hw/usb/hcd-ohci.c:734
  #1 ohci_service_ed_list ../hw/usb/hcd-ohci.c:1180
  #2 ohci_process_lists ../hw/usb/hcd-ohci.c:1214
  #3 ohci_frame_boundary ../hw/usb/hcd-ohci.c:1257
  #4 timerlist_run_timers ../util/qemu-timer.c:572
  #5 qemu_clock_run_timers ../util/qemu-timer.c:586
  #6 qemu_clock_run_all_timers ../util/qemu-timer.c:672
  #7 main_loop_wait ../util/main-loop.c:527
  #8 qemu_main_loop ../softmmu/vl.c:1676
  #9 main ../softmmu/main.c:50

Reported-by: Gaoning Pan <f3513da3128ad7eea05b25635fb6fe0574b80f8e@zju.edu.cn>
Reported-by: Yongkang Jia <c860347e73231fe79148dea8742f515f8c78ffe0@163.com>
Reported-by: Yi Ren <cf88cf14c4486cdac0f3065f05b56c3b44963efb@alibaba-inc.com>
Signed-off-by: Prasad J Pandit <1bdd588eeeab8f60e7557fb78744aa304335ed24@fedoraproject.org>
Message-id: cf36c5c57f9cf3b879d79ef8b99e2ddd93440841@redhat.com
Signed-off-by: Gerd Hoffmann <cad73e70082427fddc9be3baaf34e698dffd21c0@redhat.com>

jackun/USBqemu-wheel,jackun/USBqemu-wheel,jackun/USBqemu-wheel