* sync libusb with main arch

This commit is contained in:
Alexander Baldeck 2021-01-16 17:48:50 +01:00
parent cb2cc7b2a4
commit 8e849fbc5a
2 changed files with 46 additions and 4 deletions

View File

@ -5,7 +5,7 @@
pkgname=libusb pkgname=libusb
pkgver=1.0.24 pkgver=1.0.24
pkgrel=1 pkgrel=2
pkgdesc="Library that provides generic access to USB devices" pkgdesc="Library that provides generic access to USB devices"
arch=(x86_64 powerpc64le) arch=(x86_64 powerpc64le)
url="https://libusb.info/" url="https://libusb.info/"
@ -13,12 +13,17 @@ license=('LGPL2.1')
depends=('glibc') depends=('glibc')
makedepends=('systemd') makedepends=('systemd')
provides=('libusb-1.0.so') provides=('libusb-1.0.so')
source=("https://github.com/${pkgname}/${pkgname}/releases/download/v$pkgver/${pkgname}-$pkgver.tar.bz2") source=("https://github.com/${pkgname}/${pkgname}/releases/download/v$pkgver/${pkgname}-$pkgver.tar.bz2"
sha512sums=('5aea36a530aaa15c6dd656d0ed3ce204522c9946d8d39ffbb290dab4a98cda388a2598da4995123d1032324056090bd429e702459626d3e8d7daeebc4e7ff3dc') "${pkgname}-1.0.24-descriptor_parsing.patch"
b2sums=('f6188b5af1225cf8b6d1486b6efcf48e837ee4f2e3592adab3ae6aae0a74a67aa54f40f0dd547f951a194d40954f2ee33acf741d2eee0b8449ce64f2edcf1018') )
sha512sums=('5aea36a530aaa15c6dd656d0ed3ce204522c9946d8d39ffbb290dab4a98cda388a2598da4995123d1032324056090bd429e702459626d3e8d7daeebc4e7ff3dc'
'588624bdcce2ff3ef98ab28b98b00eb48f16ef9e94033f29aaf8c6d6cb3e56d1299ea59f63b0d7a485955fa85182db0db5c043ceca24345c41f40311483606e2')
b2sums=('f6188b5af1225cf8b6d1486b6efcf48e837ee4f2e3592adab3ae6aae0a74a67aa54f40f0dd547f951a194d40954f2ee33acf741d2eee0b8449ce64f2edcf1018'
'65efafcaa87cc75000adb0f6fae6c5fc33d72727bacde327bae5e5e68162783c8203f92ecd3de2f7e8a9869f587ea76a0b1a054369a15cd9b3cec8f7fc44036f')
prepare() { prepare() {
cd "$pkgname-$pkgver" cd "$pkgname-$pkgver"
patch -Np1 -i ../"${pkgname}-1.0.24-descriptor_parsing.patch"
autoreconf -vfi autoreconf -vfi
} }

View File

@ -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;