From 08ae144374b34d890806ba22e51b2e5df9bd1e46 Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Mon, 27 Jun 2011 14:56:28 +0200 Subject: [PATCH] don't use invalid config descriptors (#707853) --- usbutils-003-invalid-config-descriptors.patch | 50 +++++++++++++++++++ usbutils.spec | 11 +++- 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 usbutils-003-invalid-config-descriptors.patch 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 +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 003-2 +- don't use invalid config descriptors (#707853) + * Thu Jun 16 2011 Jiri Moskovcak 003-1 - new upstream release