chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
udev: usb_id: parse only 'size' bytes of the 'descriptors' buffer
[elogind.git]
/
src
/
udev
/
scsi_id
/
scsi_serial.c
diff --git
a/src/udev/scsi_id/scsi_serial.c
b/src/udev/scsi_id/scsi_serial.c
index 8440b4cb4c6829c3bd84a0e1a1a2201e2d640663..d522a23a088c0af01145d0d2ee0c8eeb953fdf0d 100644
(file)
--- a/
src/udev/scsi_id/scsi_serial.c
+++ b/
src/udev/scsi_id/scsi_serial.c
@@
-436,7
+436,7
@@
static int do_scsi_page0_inquiry(struct udev *udev,
* If the vendor id appears in the page assume the page is
* invalid.
*/
* If the vendor id appears in the page assume the page is
* invalid.
*/
- if (
!strncmp
((char *)&buffer[VENDOR_LENGTH], dev_scsi->vendor, VENDOR_LENGTH)) {
+ if (
strneq
((char *)&buffer[VENDOR_LENGTH], dev_scsi->vendor, VENDOR_LENGTH)) {
log_debug("%s: invalid page0 data\n", dev_scsi->kernel);
return 1;
}
log_debug("%s: invalid page0 data\n", dev_scsi->kernel);
return 1;
}
@@
-799,6
+799,7
@@
static int do_scsi_page80_inquiry(struct udev *udev,
ser_ind = prepend_vendor_model(udev, dev_scsi, &serial[1]);
if (ser_ind < 0)
return 1;
ser_ind = prepend_vendor_model(udev, dev_scsi, &serial[1]);
if (ser_ind < 0)
return 1;
+ ser_ind++; /* for the leading 'S' */
for (i = 4; i < len + 4; i++, ser_ind++)
serial[ser_ind] = buf[i];
}
for (i = 4; i < len + 4; i++, ser_ind++)
serial[ser_ind] = buf[i];
}
@@
-920,7
+921,8
@@
int scsi_get_serial(struct udev *udev,
}
} else if (page_code != 0x00) {
log_debug("%s: unsupported page code 0x%d\n", dev_scsi->kernel, page_code);
}
} else if (page_code != 0x00) {
log_debug("%s: unsupported page code 0x%d\n", dev_scsi->kernel, page_code);
- return 1;
+ retval = 1;
+ goto completed;
}
/*
}
/*