[arch-commits] Commit in libusb/trunk (2 files)
David Runge
dvzrv at archlinux.org
Sun Jan 10 19:24:30 UTC 2021
Date: Sunday, January 10, 2021 @ 19:24:30
Author: dvzrv
Revision: 406058
upgpkg: libusb 1.0.24-2: Rebuild to fix issue with device enumeration.
Upstream fixed an issue in regards to device enumeration (https://bugs.archlinux.org/task/69121).
The patch is a backport of https://github.com/libusb/libusb/commit/f6d2cb561402c3b6d3627c0eb89e009b503d9067
Added:
libusb/trunk/libusb-1.0.24-descriptor_parsing.patch
Modified:
libusb/trunk/PKGBUILD
----------------------------------------+
PKGBUILD | 13 +++++++---
libusb-1.0.24-descriptor_parsing.patch | 37 +++++++++++++++++++++++++++++++
2 files changed, 46 insertions(+), 4 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2021-01-10 18:47:06 UTC (rev 406057)
+++ PKGBUILD 2021-01-10 19:24:30 UTC (rev 406058)
@@ -4,7 +4,7 @@
pkgname=libusb
pkgver=1.0.24
-pkgrel=1
+pkgrel=2
pkgdesc="Library that provides generic access to USB devices"
arch=('x86_64')
url="https://libusb.info/"
@@ -12,12 +12,17 @@
depends=('glibc')
makedepends=('systemd')
provides=('libusb-1.0.so')
-source=("https://github.com/${pkgname}/${pkgname}/releases/download/v$pkgver/${pkgname}-$pkgver.tar.bz2")
-sha512sums=('5aea36a530aaa15c6dd656d0ed3ce204522c9946d8d39ffbb290dab4a98cda388a2598da4995123d1032324056090bd429e702459626d3e8d7daeebc4e7ff3dc')
-b2sums=('f6188b5af1225cf8b6d1486b6efcf48e837ee4f2e3592adab3ae6aae0a74a67aa54f40f0dd547f951a194d40954f2ee33acf741d2eee0b8449ce64f2edcf1018')
+source=("https://github.com/${pkgname}/${pkgname}/releases/download/v$pkgver/${pkgname}-$pkgver.tar.bz2"
+ "${pkgname}-1.0.24-descriptor_parsing.patch"
+)
+sha512sums=('5aea36a530aaa15c6dd656d0ed3ce204522c9946d8d39ffbb290dab4a98cda388a2598da4995123d1032324056090bd429e702459626d3e8d7daeebc4e7ff3dc'
+ '588624bdcce2ff3ef98ab28b98b00eb48f16ef9e94033f29aaf8c6d6cb3e56d1299ea59f63b0d7a485955fa85182db0db5c043ceca24345c41f40311483606e2')
+b2sums=('f6188b5af1225cf8b6d1486b6efcf48e837ee4f2e3592adab3ae6aae0a74a67aa54f40f0dd547f951a194d40954f2ee33acf741d2eee0b8449ce64f2edcf1018'
+ '65efafcaa87cc75000adb0f6fae6c5fc33d72727bacde327bae5e5e68162783c8203f92ecd3de2f7e8a9869f587ea76a0b1a054369a15cd9b3cec8f7fc44036f')
prepare() {
cd "$pkgname-$pkgver"
+ patch -Np1 -i ../"${pkgname}-1.0.24-descriptor_parsing.patch"
autoreconf -vfi
}
Added: libusb-1.0.24-descriptor_parsing.patch
===================================================================
--- libusb-1.0.24-descriptor_parsing.patch (rev 0)
+++ libusb-1.0.24-descriptor_parsing.patch 2021-01-10 19:24:30 UTC (rev 406058)
@@ -0,0 +1,37 @@
+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;
More information about the arch-commits
mailing list