usb-ccid: make ccid_write_data_block() cope with null buffers
authorPhilippe Mathieu-Daudé <f4bug@amsat.org>
Fri, 7 Apr 2017 22:20:13 +0000 (19:20 -0300)
committerMichael Tokarev <mjt@tls.msk.ru>
Sun, 7 May 2017 06:57:51 +0000 (09:57 +0300)
static code analyzer complain:

hw/usb/dev-smartcard-reader.c:816:5: warning: Null pointer passed as an argument to a 'nonnull' parameter
    memcpy(p->abData, data, len);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~

Reported-by: Clang Static Analyzer
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
hw/usb/dev-smartcard-reader.c

index 757b8b3f5a0927552f56e573688fcb407088ff2b..49cb1829b5ab9d97f7c646d80d5ac0b210a97ddd 100644 (file)
@@ -813,7 +813,10 @@ static void ccid_write_data_block(USBCCIDState *s, uint8_t slot, uint8_t seq,
     if (p->b.bError) {
         DPRINTF(s, D_VERBOSE, "error %d\n", p->b.bError);
     }
-    memcpy(p->abData, data, len);
+    if (len) {
+        g_assert_nonnull(data);
+        memcpy(p->abData, data, len);
+    }
     ccid_reset_error_status(s);
     usb_wakeup(s->bulk, 0);
 }