]> git.proxmox.com Git - mirror_qemu.git/commitdiff
usb: fix unbounded stack warning for xhci_dma_write_u32s
authorPeter Xu <peterx@redhat.com>
Fri, 11 Mar 2016 01:51:46 +0000 (09:51 +0800)
committerGerd Hoffmann <kraxel@redhat.com>
Fri, 18 Mar 2016 12:42:14 +0000 (13:42 +0100)
All the callers for xhci_dma_write_u32s() are using mostly 5 * uint32_t
in len. To avoid unbound stack warning for the function, make it
statically allocated, and assert when it's not big enough in the
future.

Signed-off-by: Peter Xu <peterx@redhat.com>
Message-id: 1457661106-9569-1-git-send-email-peterx@redhat.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
hw/usb/hcd-xhci.c

index 44b6f8c03d87d75346b7a3dddb7ea0ac3539238d..bcde8a2f48c2267ada414c74a0a30ba785645c8e 100644 (file)
@@ -698,11 +698,13 @@ static inline void xhci_dma_write_u32s(XHCIState *xhci, dma_addr_t addr,
                                        uint32_t *buf, size_t len)
 {
     int i;
-    uint32_t tmp[len / sizeof(uint32_t)];
+    uint32_t tmp[5];
+    uint32_t n = len / sizeof(uint32_t);
 
     assert((len % sizeof(uint32_t)) == 0);
+    assert(n <= ARRAY_SIZE(tmp));
 
-    for (i = 0; i < (len / sizeof(uint32_t)); i++) {
+    for (i = 0; i < n; i++) {
         tmp[i] = cpu_to_le32(buf[i]);
     }
     pci_dma_write(PCI_DEVICE(xhci), addr, tmp, len);