usb: check USB configuration descriptor object
authorPrasad J Pandit <pjp@fedoraproject.org>
Thu, 11 Feb 2016 11:01:20 +0000 (16:31 +0530)
committerGerd Hoffmann <kraxel@redhat.com>
Tue, 23 Feb 2016 09:38:00 +0000 (10:38 +0100)
When processing remote NDIS control message packets, the USB Net
device emulator checks to see if the USB configuration descriptor
object is of RNDIS type(2). But it does not check if it is null,
which leads to a null dereference error. Add check to avoid it.

Reported-by: Qinghao Tang <luodalongde@gmail.com>
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
Message-id: 1455188480-14688-1-git-send-email-ppandit@redhat.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
hw/usb/dev-network.c

index 985a6298bf857afa33fb55297d39cf4724732686..5dc45383d317c0a7987b93c29a04e0a66c2a3c30 100644 (file)
@@ -654,7 +654,8 @@ typedef struct USBNetState {
 
 static int is_rndis(USBNetState *s)
 {
-    return s->dev.config->bConfigurationValue == DEV_RNDIS_CONFIG_VALUE;
+    return s->dev.config ?
+            s->dev.config->bConfigurationValue == DEV_RNDIS_CONFIG_VALUE : 0;
 }
 
 static int ndis_query(USBNetState *s, uint32_t oid,