Bug#595118: unblock: libusb/2:0.1.12-16
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
Please unblock package libusb
I have just uploaded a new libusb version which fixes a crash with some
devices that have non-common interface descriptors (Apple devices
mainly).
The structure contains two pointers that are not always initialized to
NULL when the code leaves the while loop before the end. In that case
calling free on the pointers later causes a crash.
This was in my inbox for sometime already and already used in some
distributions.
diff -u libusb-0.1.12/debian/control libusb-0.1.12/debian/control
--- libusb-0.1.12/debian/control
+++ libusb-0.1.12/debian/control
@@ -3,7 +3,7 @@
Priority: optional
Maintainer: Aurelien Jarno <aurel32@debian.org>
Build-Depends: debhelper (>= 5.0.22), autotools-dev, pkg-config, docbook, docbook-dsssl, quilt
-Standards-Version: 3.8.4
+Standards-Version: 3.9.0
Package: libusb-0.1-4
Priority: important
diff -u libusb-0.1.12/debian/changelog libusb-0.1.12/debian/changelog
--- libusb-0.1.12/debian/changelog
+++ libusb-0.1.12/debian/changelog
@@ -1,3 +1,12 @@
+libusb (2:0.1.12-16) unstable; urgency=low
+
+ * Add debian/patches/07_altsetting_alloc.patch based on a patch from
+ Pawel Kot to fix crashes with some USB devices, due to calls to
+ free() with uninitialized pointers.
+ * Upgraded policy compliance to 3.9.0 (no changes).
+
+ -- Aurelien Jarno <aurel32@debian.org> Tue, 31 Aug 2010 20:01:39 +0200
+
libusb (2:0.1.12-15) unstable; urgency=low
* Don't include config.guess/config.sub in 91_autoreconf.diff (closes:
diff -u libusb-0.1.12/debian/patches/series libusb-0.1.12/debian/patches/series
--- libusb-0.1.12/debian/patches/series
+++ libusb-0.1.12/debian/patches/series
@@ -6,4 +6,5 @@
05_emdebian_libs.diff
06_bsd.diff
+07_altsetting_alloc.patch
90_am_maintainer_mode.diff
91_autoreconf.diff
only in patch2:
unchanged:
--- libusb-0.1.12.orig/debian/patches/07_altsetting_alloc.patch
+++ libusb-0.1.12/debian/patches/07_altsetting_alloc.patch
@@ -0,0 +1,33 @@
+--- a/descriptors.c
++++ b/descriptors.c
+@@ -177,6 +177,7 @@
+ }
+
+ ifp = interface->altsetting + interface->num_altsetting;
++ memset(ifp, 0, sizeof(struct usb_interface_descriptor));
+ interface->num_altsetting++;
+
+ usb_parse_descriptor(buffer, "bbbbbbbbb", ifp);
+@@ -219,10 +220,7 @@
+ /* Copy any unknown descriptors into a storage area for */
+ /* drivers to later parse */
+ len = (int)(buffer - begin);
+- if (!len) {
+- ifp->extra = NULL;
+- ifp->extralen = 0;
+- } else {
++ if (len) {
+ ifp->extra = malloc(len);
+ if (!ifp->extra) {
+ if (usb_debug >= 1)
+@@ -277,8 +275,7 @@
+ parsed += retval;
+ size -= retval;
+ }
+- } else
+- ifp->endpoint = NULL;
++ }
+
+ /* We check to see if it's an alternate to this one */
+ ifp = (struct usb_interface_descriptor *)buffer;
+
Could you please unblock it? Thanks in advance.
unblock libusb/2:0.1.12-16
-- System Information:
Debian Release: squeeze/sid
APT prefers unstable
APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.32-5-amd64 (SMP w/2 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Reply to: