all: Make usbi_os_backend.get_[active_]config_descriptor return len
commitbbe25fac47c2dfd2d50a2c3a1b0ed96473d8dc1c
authorHans de Goede <hdegoede@redhat.com>
Thu, 23 May 2013 12:40:05 +0000 (23 14:40 +0200)
committerHans de Goede <hdegoede@redhat.com>
Fri, 24 May 2013 11:58:37 +0000 (24 13:58 +0200)
tree946cd028c7228791db4631488eb23a3c62636ab9
parentaf06916bed2c7eb3b1a1a144348ebc7478097604
all: Make usbi_os_backend.get_[active_]config_descriptor return len

Since commit 5e479f1821d3294fb1cc70c5867c69eca2551de7:
"Core: Avoid short read failures on broken descriptors"

usbi_os_backend.get_[active_]config_descriptor no longer return on error
(under Linux) when returning less bytes then requested. But
libusb_get_[active_]config_descriptor still not only requests wTotalLength
bytes, but also blindly assumes that on success it has gotten wTotalLength
bytes.

This patch fixes this, it changes all usbi_os_backend.get_*config_descriptor
implementations to return the actual length on success and uses this value as
the descriptor size in parse_configuration().

Note that the linux and wince backends were already returning the actual
length and thus are not touched.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
libusb/descriptor.c
libusb/os/darwin_usb.c
libusb/os/openbsd_usb.c
libusb/os/windows_usb.c
libusb/version_nano.h