diff options
author | 2020-12-14 03:13:01 +0100 | |
---|---|---|
committer | 2020-12-14 03:13:01 +0100 | |
commit | 64634fb2c17c6dc37a6d174803f7183f898fbb00 (patch) | |
tree | 98cc3d4fb49e77d8c6ae6fbb968bc90cd8ec84d7 /dev-libs/libusb | |
parent | dev-python/xarray: Stabilize 0.16.1 x86, #737526 (diff) | |
download | gentoo-64634fb2c17c6dc37a6d174803f7183f898fbb00.tar.gz gentoo-64634fb2c17c6dc37a6d174803f7183f898fbb00.tar.bz2 gentoo-64634fb2c17c6dc37a6d174803f7183f898fbb00.zip |
dev-libs/libusb: Revbump to fix Apple and USV device detection
Closes: https://bugs.gentoo.org/759814
Package-Manager: Portage-3.0.12, Repoman-3.0.2
Signed-off-by: Lars Wendler <polynomial-c@gentoo.org>
Diffstat (limited to 'dev-libs/libusb')
-rw-r--r-- | dev-libs/libusb/files/libusb-1.0.24-multi_device_config_parsing.patch | 65 | ||||
-rw-r--r-- | dev-libs/libusb/libusb-1.0.24-r1.ebuild (renamed from dev-libs/libusb/libusb-1.0.24.ebuild) | 4 |
2 files changed, 69 insertions, 0 deletions
diff --git a/dev-libs/libusb/files/libusb-1.0.24-multi_device_config_parsing.patch b/dev-libs/libusb/files/libusb-1.0.24-multi_device_config_parsing.patch new file mode 100644 index 000000000000..739d41c404a7 --- /dev/null +++ b/dev-libs/libusb/files/libusb-1.0.24-multi_device_config_parsing.patch @@ -0,0 +1,65 @@ +From f6d2cb561402c3b6d3627c0eb89e009b503d9067 Mon Sep 17 00:00:00 2001 +From: Chris Dickens <christopher.a.dickens@gmail.com> +Date: Sun, 13 Dec 2020 15:49:19 -0800 +Subject: [PATCH] linux_usbfs: Fix parsing of descriptors for + multi-configuration devices + +Commit e2be556bd2 ("linux_usbfs: Parse config descriptors during device +initialization") introduced a regression for devices with multiple +configurations. The logic that verifies the reported length of the +configuration descriptors failed to count the length of the +configuration descriptor itself and would truncate the actual length by +9 bytes, leading to a parsing error for subsequent descriptors. + +Closes #825 + +Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com> +--- + libusb/os/linux_usbfs.c | 12 ++++++++---- + libusb/version_nano.h | 2 +- + 2 files changed, 9 insertions(+), 5 deletions(-) + +diff --git a/libusb/os/linux_usbfs.c b/libusb/os/linux_usbfs.c +index fb2ed53a..4d2dc8d6 100644 +--- a/libusb/os/linux_usbfs.c ++++ b/libusb/os/linux_usbfs.c +@@ -641,7 +641,12 @@ static int seek_to_next_config(struct libusb_context *ctx, + uint8_t *buffer, size_t len) + { + struct usbi_descriptor_header *header; +- int offset = 0; ++ int offset; ++ ++ /* Start seeking past the config descriptor */ ++ offset = LIBUSB_DT_CONFIG_SIZE; ++ buffer += LIBUSB_DT_CONFIG_SIZE; ++ len -= LIBUSB_DT_CONFIG_SIZE; + + while (len > 0) { + if (len < 2) { +@@ -718,7 +723,7 @@ static int parse_config_descriptors(struct libusb_device *dev) + } + + if (priv->sysfs_dir) { +- /* ++ /* + * In sysfs wTotalLength is ignored, instead the kernel returns a + * config descriptor with verified bLength fields, with descriptors + * with an invalid bLength removed. +@@ -727,8 +732,7 @@ static int parse_config_descriptors(struct libusb_device *dev) + int offset; + + if (num_configs > 1 && idx < num_configs - 1) { +- offset = seek_to_next_config(ctx, buffer + LIBUSB_DT_CONFIG_SIZE, +- remaining - LIBUSB_DT_CONFIG_SIZE); ++ offset = seek_to_next_config(ctx, buffer, remaining); + if (offset < 0) + return offset; + sysfs_config_len = (uint16_t)offset; +diff --git a/libusb/version_nano.h b/libusb/version_nano.h +index 61a0a700..578b0979 100644 +--- a/libusb/version_nano.h ++++ b/libusb/version_nano.h +@@ -1 +1 @@ +-#define LIBUSB_NANO 11584 ++#define LIBUSB_NANO 11586 diff --git a/dev-libs/libusb/libusb-1.0.24.ebuild b/dev-libs/libusb/libusb-1.0.24-r1.ebuild index 167ef4b659da..50c1cb3b454b 100644 --- a/dev-libs/libusb/libusb-1.0.24.ebuild +++ b/dev-libs/libusb/libusb-1.0.24-r1.ebuild @@ -19,6 +19,10 @@ DEPEND="${RDEPEND} !udev? ( virtual/os-headers )" BDEPEND="doc? ( app-doc/doxygen )" +PATCHES=( + "${FILESDIR}/${P}-multi_device_config_parsing.patch" #759814 +) + multilib_src_configure() { local myeconfargs=( $(use_enable static-libs static) |