aboutsummaryrefslogtreecommitdiffstats
path: root/package/libs/libusb
diff options
context:
space:
mode:
Diffstat (limited to 'package/libs/libusb')
-rw-r--r--package/libs/libusb/Makefile2
-rw-r--r--package/libs/libusb/patches/001-Correct-a-typo-in-the-Changelog-and-clean-up-a-stray.patch29
-rw-r--r--package/libs/libusb/patches/002-linux_usbfs-Fix-parsing-of-descriptors-for-multi-con.patch61
3 files changed, 91 insertions, 1 deletions
diff --git a/package/libs/libusb/Makefile b/package/libs/libusb/Makefile
index e931536339..6b80b3848d 100644
--- a/package/libs/libusb/Makefile
+++ b/package/libs/libusb/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=libusb
PKG_VERSION:=1.0.24
-PKG_RELEASE:=1
+PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=\
diff --git a/package/libs/libusb/patches/001-Correct-a-typo-in-the-Changelog-and-clean-up-a-stray.patch b/package/libs/libusb/patches/001-Correct-a-typo-in-the-Changelog-and-clean-up-a-stray.patch
new file mode 100644
index 0000000000..b17d6178d3
--- /dev/null
+++ b/package/libs/libusb/patches/001-Correct-a-typo-in-the-Changelog-and-clean-up-a-stray.patch
@@ -0,0 +1,29 @@
+From 369af149e3ad92514a2d24f112cedfeb7acaf558 Mon Sep 17 00:00:00 2001
+From: Chris Dickens <christopher.a.dickens@gmail.com>
+Date: Sun, 13 Dec 2020 15:46:27 -0800
+Subject: [PATCH] Correct a typo in the Changelog and clean up a stray file
+
+Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com>
+---
+ ChangeLog | 2 +-
+ libusb/version_nano.h | 2 +-
+ test | 0
+ 3 files changed, 2 insertions(+), 2 deletions(-)
+ delete mode 100644 test
+
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -12,7 +12,7 @@ visit: http://log.libusb.info
+ * Darwin (macOS): use IOUSBDevice as darwin_device_class explicitly (#693)
+ * Linux: Drop support for kernel older than 2.6.32
+ * Linux: Provide an event thread name (#689)
+-* Linux: Wait until all USBs have been reaped before freeing them (#607)
++* Linux: Wait until all URBs have been reaped before freeing them (#607)
+ * NetBSD: Recognize device timeouts (#710)
+ * OpenBSD: Allow opening ugen devices multiple times (#763)
+ * OpenBSD: Support libusb_get_port_number() (#764)
+--- a/libusb/version_nano.h
++++ b/libusb/version_nano.h
+@@ -1 +1 @@
+-#define LIBUSB_NANO 11584
++#define LIBUSB_NANO 11585
diff --git a/package/libs/libusb/patches/002-linux_usbfs-Fix-parsing-of-descriptors-for-multi-con.patch b/package/libs/libusb/patches/002-linux_usbfs-Fix-parsing-of-descriptors-for-multi-con.patch
new file mode 100644
index 0000000000..a53a8900de
--- /dev/null
+++ b/package/libs/libusb/patches/002-linux_usbfs-Fix-parsing-of-descriptors-for-multi-con.patch
@@ -0,0 +1,61 @@
+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(-)
+
+--- a/libusb/os/linux_usbfs.c
++++ b/libusb/os/linux_usbfs.c
+@@ -641,7 +641,12 @@ static int seek_to_next_config(struct li
+ 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(stru
+ }
+
+ 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(stru
+ 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;
+--- a/libusb/version_nano.h
++++ b/libusb/version_nano.h
+@@ -1 +1 @@
+-#define LIBUSB_NANO 11585
++#define LIBUSB_NANO 11586