diff options
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 |