[usbutils] don't use invalid config descriptors (#707853)

Nils Philippsen nphilipp at fedoraproject.org
Mon Jun 27 12:57:24 UTC 2011


commit 08ae144374b34d890806ba22e51b2e5df9bd1e46
Author: Nils Philippsen <nils at redhat.com>
Date:   Mon Jun 27 14:56:28 2011 +0200

    don't use invalid config descriptors (#707853)

 usbutils-003-invalid-config-descriptors.patch |   50 +++++++++++++++++++++++++
 usbutils.spec                                 |   11 +++++-
 2 files changed, 60 insertions(+), 1 deletions(-)
---
diff --git a/usbutils-003-invalid-config-descriptors.patch b/usbutils-003-invalid-config-descriptors.patch
new file mode 100644
index 0000000..32fbaff
--- /dev/null
+++ b/usbutils-003-invalid-config-descriptors.patch
@@ -0,0 +1,50 @@
+From d63fa164a4ffebc5247acaa3b80b0d4f2e21d926 Mon Sep 17 00:00:00 2001
+From: Nils Philippsen <nils at redhat.com>
+Date: Mon, 30 May 2011 17:19:47 +0200
+Subject: [PATCH] don't use invalid config descriptors
+
+This fixes "lsusb -v" crashing if device files are present but can't be
+opened.
+---
+ lsusb.c |   23 +++++++++++++++++------
+ 1 files changed, 17 insertions(+), 6 deletions(-)
+
+diff --git a/lsusb.c b/lsusb.c
+index 6ba2288..25dbc51 100644
+--- a/lsusb.c
++++ b/lsusb.c
+@@ -3800,14 +3800,25 @@ static void dumpdev(libusb_device *dev)
+ 	if (desc.bNumConfigurations) {
+ 		struct libusb_config_descriptor *config;
+ 
+-		libusb_get_config_descriptor(dev, 0, &config);
+-		otg = do_otg(config) || otg;
+-		libusb_free_config_descriptor(config);
++		ret = libusb_get_config_descriptor(dev, 0, &config);
++		if (ret) {
++			fprintf(stderr, "Couldn't get configuration descriptor 0, "
++					"some information will be missing\n");
++		} else {
++			otg = do_otg(config) || otg;
++			libusb_free_config_descriptor(config);
++		}
+ 
+ 		for (i = 0; i < desc.bNumConfigurations; ++i) {
+-			libusb_get_config_descriptor(dev, i, &config);
+-			dump_config(udev, config);
+-			libusb_free_config_descriptor(config);
++			ret = libusb_get_config_descriptor(dev, i, &config);
++			if (ret) {
++				fprintf(stderr, "Couldn't get configuration "
++						"descriptor %d, some information will "
++						"be missing\n", i);
++			} else {
++				dump_config(udev, config);
++				libusb_free_config_descriptor(config);
++			}
+ 		}
+ 	}
+ 	if (!udev)
+-- 
+1.7.5.4
+
diff --git a/usbutils.spec b/usbutils.spec
index 5e6f066..9ae17c7 100644
--- a/usbutils.spec
+++ b/usbutils.spec
@@ -1,6 +1,6 @@
 Name: usbutils
 Version: 003
-Release: 1%{?dist}
+Release: 2%{?dist}
 Source:	http://www.kernel.org/pub/linux/utils/usb/usbutils/%{name}-%{version}.tar.gz
 URL: http://www.linux-usb.org/
 License: GPLv2+
@@ -12,6 +12,11 @@ Summary: Linux USB utilities
 Group: Applications/System
 Conflicts: hotplug < 3:2002_01_14-2
 Patch0: usbutils-003-hwdata.patch
+# https://bugzilla.redhat.com/show_bug.cgi?id=707853
+# "[abrt] usbutils-001-3.fc15: find_otg: Process /usr/bin/lsusb was killed by
+# signal 11 (SIGSEGV)"
+# sent to upstream (Greg KH) via email and github pull request
+Patch1: usbutils-003-invalid-config-descriptors.patch
 
 %description
 This package contains utilities for inspecting devices connected to a
@@ -20,6 +25,7 @@ USB bus.
 %prep
 %setup -q
 %patch0 -p1
+%patch1 -p1 -b .invalid-config-descriptors
 autoreconf
 
 %build
@@ -44,6 +50,9 @@ sed -i 's|usbids=/usr/share/usb.ids|usbids=/usr/share/hwdata/usb.ids|' $RPM_BUIL
 rm -rf $RPM_BUILD_ROOT
 
 %changelog
+* Mon Jun 27 2011 Nils Philippsen <nils at redhat.com> 003-2
+- don't use invalid config descriptors (#707853)
+
 * Thu Jun 16 2011 Jiri Moskovcak <jmoskovc at redhat.com> 003-1
 - new upstream release
 


More information about the scm-commits mailing list