forked from pool/libusb-1_0
Accepting request 863914 from hardware
OBS-URL: https://build.opensuse.org/request/show/863914 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libusb-1_0?expand=0&rev=43
This commit is contained in:
commit
92f41c992d
44
0001-fix-descriptor-parsing.patch
Normal file
44
0001-fix-descriptor-parsing.patch
Normal file
@ -0,0 +1,44 @@
|
||||
From f6d2cb561402c3b6d3627c0eb89e009b503d9067 Sun 17 01 11:38:45 2021
|
||||
From: Simon Vogl <simon.vogl@gmx.net>
|
||||
Date: Sun, 17 Jan 2021 11:38:45 UTC
|
||||
Subject: [PATCH] Fix USB Device enumeration
|
||||
|
||||
This patch fixes a regression introduced in libusb 1.0.24 that prevents certain devices like smartphones from being detected.
|
||||
|
||||
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;
|
@ -1,3 +1,8 @@
|
||||
-------------------------------------------------------------------
|
||||
Sun Jan 17 11:38:45 UTC 2021 - Simon Vogl <simon.vogl@gmx.net>
|
||||
|
||||
- Add 0001-fix-descriptor-parsing.patch to fix detection of some devices.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Dec 10 19:18:02 UTC 2020 - Martin Hauke <mardnh@gmx.de>
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package libusb-1_0
|
||||
#
|
||||
# Copyright (c) 2020 SUSE LLC
|
||||
# Copyright (c) 2021 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -27,6 +27,8 @@ Group: System/Hardware
|
||||
URL: http://libusb.info/
|
||||
Source: https://github.com/libusb/libusb/releases/download/v%{version}/libusb-%{version}.tar.bz2
|
||||
Source1: baselibs.conf
|
||||
# PATCH-FIX-UPSTREAM
|
||||
Patch1: 0001-fix-descriptor-parsing.patch
|
||||
BuildRequires: dos2unix
|
||||
BuildRequires: pkgconfig
|
||||
BuildRequires: pkgconfig(libudev)
|
||||
@ -51,7 +53,7 @@ Requires: libusb-1_0-0 = %{version}
|
||||
Libusb is a library that allows userspace access to USB devices.
|
||||
|
||||
%prep
|
||||
%setup -q -n %{_name}-%{version}
|
||||
%autosetup -p1 -n %{_name}-%{version}
|
||||
dos2unix NEWS
|
||||
|
||||
%build
|
||||
|
Loading…
Reference in New Issue
Block a user