Windows: Fix erroneous pointer array allocation reported by Clang
authorPete Batard <pete@akeo.ie>
Wed, 13 Jun 2012 12:38:46 +0000 (13:38 +0100)
committerPete Batard <pete@akeo.ie>
Wed, 13 Jun 2012 19:52:39 +0000 (20:52 +0100)
* Result of 'calloc' is converted to a pointer of type 'unsigned char *',
  which is incompatible with sizeof operand type 'PUSB_CONFIGURATION_DESCRIPTOR'
* priv->config_descriptor is indeed an array of pointers, with each descriptor
  allocated, rather than a sequential list of fixed descriptor.

libusb/os/windows_usb.c
libusb/version_nano.h

index 98b26eb..461633b 100644 (file)
@@ -901,7 +901,7 @@ static int cache_config_descriptors(struct libusb_device *dev, HANDLE hub_handle
        if (dev->num_configurations == 0)
                return LIBUSB_ERROR_INVALID_PARAM;
 
-       priv->config_descriptor = (unsigned char**) calloc(dev->num_configurations, sizeof(PUSB_CONFIGURATION_DESCRIPTOR));
+       priv->config_descriptor = (unsigned char**) calloc(dev->num_configurations, sizeof(unsigned char*));
        if (priv->config_descriptor == NULL)
                return LIBUSB_ERROR_NO_MEM;
        for (i=0; i<dev->num_configurations; i++)
index 32a4fe1..c47019a 100644 (file)
@@ -1 +1 @@
-#define LIBUSB_NANO 10529
+#define LIBUSB_NANO 10530