Author: matthew
Date: 2007-10-29 15:46:27 -0600 (Mon, 29 Oct 2007)
New Revision: 1875

Added:
   trunk/udev/udev-113-usb_id-1.patch
Log:
Add a patch to fix a segfault in usb_id.

Added: trunk/udev/udev-113-usb_id-1.patch
===================================================================
--- trunk/udev/udev-113-usb_id-1.patch                          (rev 0)
+++ trunk/udev/udev-113-usb_id-1.patch  2007-10-29 21:46:27 UTC (rev 1875)
@@ -0,0 +1,102 @@
+Submitted By: Matt Burgess (matthew at linuxfromscratch dot org)
+Date: 2007-10-28
+Initial Package Version: 113
+Upstream Status: From Upstream
+Origin: 
http://git.kernel.org/?p=linux/hotplug/udev.git;a=commitdiff;h=963033472f8d2aab0bf77147b916de8f3b0b5450
+Description: Fixes a segfault in usb_id
+
+diff -Naur udev-113.orig/extras/usb_id/usb_id.c udev-113/extras/usb_id/usb_id.c
+--- udev-113.orig/extras/usb_id/usb_id.c       2007-06-23 15:44:48.000000000 
+0000
++++ udev-113/extras/usb_id/usb_id.c    2007-10-28 17:11:45.000000000 +0000
+@@ -1,7 +1,5 @@
+ /*
+- * usb_id.c
+- *
+- * Identify an USB (block) device
++ * usb_id - identify an USB device
+  *
+  * Copyright (c) 2005 SUSE Linux Products GmbH, Germany
+  *
+@@ -224,8 +222,6 @@
+       struct sysfs_device *dev;
+       struct sysfs_device *dev_interface;
+       struct sysfs_device *dev_usb;
+-      const char *scsi_model, *scsi_vendor, *scsi_type, *scsi_rev;
+-      const char *usb_model = NULL, *usb_vendor = NULL, *usb_rev, *usb_serial;
+       const char *if_class, *if_subclass;
+       int if_class_num;
+       int protocol = 0;
+@@ -271,6 +267,7 @@
+       /* mass storage */
+       if (protocol == 6 && !use_usb_info) {
+               struct sysfs_device *dev_scsi;
++              const char *scsi_model, *scsi_vendor, *scsi_type, *scsi_rev;
+               int host, bus, target, lun;
+ 
+               /* get scsi device */
+@@ -321,40 +318,50 @@
+       }
+ 
+ fallback:
+-      /* Fallback to USB vendor & device */
++      /* fallback to USB vendor & device */
+       if (vendor_str[0] == '\0') {
++              const char *usb_vendor = NULL;
++
+               if (!use_num_info)
+-                      if (!(usb_vendor = 
sysfs_attr_get_value(dev_usb->devpath, "manufacturer")))
+-                              dbg("No USB vendor string found, using 
idVendor");
++                      usb_vendor = sysfs_attr_get_value(dev_usb->devpath, 
"manufacturer");
++
++              if (!usb_vendor)
++                      usb_vendor = sysfs_attr_get_value(dev_usb->devpath, 
"idVendor");
+ 
+               if (!usb_vendor) {
+-                      if (!(usb_vendor = 
sysfs_attr_get_value(dev_usb->devpath, "idVendor"))) {
+-                              dbg("No USB vendor information available\n");
+-                              sprintf(vendor_str,"0000");
+-                      }
++                      info("No USB vendor information available");
++                      return 1;
+               }
+-              set_str(vendor_str,usb_vendor, sizeof(vendor_str) - 1);
++              set_str(vendor_str, usb_vendor, sizeof(vendor_str)-1);
+       }
+-      
++
+       if (model_str[0] == '\0') {
++              const char *usb_model = NULL;
++
+               if (!use_num_info)
+-                      if (!(usb_model = 
sysfs_attr_get_value(dev_usb->devpath, "product")))
+-                              dbg("No USB model string found, using 
idProduct");
+-              
++                      usb_model = sysfs_attr_get_value(dev_usb->devpath, 
"product");
++
++              if (!usb_model)
++                      usb_model = sysfs_attr_get_value(dev_usb->devpath, 
"idProduct");
++
+               if (!usb_model) {
+-                      if (!(usb_model = 
sysfs_attr_get_value(dev_usb->devpath, "idProduct")))
+-                              dbg("No USB model information available\n"); 
sprintf(model_str,"0000");
++                      dbg("No USB model information available");
++                      return 1;
+               }
+-              set_str(model_str, usb_model, sizeof(model_str) - 1);
++              set_str(model_str, usb_model, sizeof(model_str)-1);
+       }
+ 
+       if (revision_str[0] == '\0') {
++              const char *usb_rev;
++
+               usb_rev = sysfs_attr_get_value(dev_usb->devpath, "bcdDevice");
+               if (usb_rev)
+                       set_str(revision_str, usb_rev, sizeof(revision_str)-1);
+       }
+ 
+       if (serial_str[0] == '\0') {
++              const char *usb_serial;
++
+               usb_serial = sysfs_attr_get_value(dev_usb->devpath, "serial");
+               if (usb_serial)
+                       set_str(serial_str, usb_serial, sizeof(serial_str)-1);

-- 
http://linuxfromscratch.org/mailman/listinfo/patches
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to