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
