|
@@ -556,9 +556,7 @@ void usb_desc_create_serial(USBDevice *dev)
|
|
DeviceState *hcd = dev->qdev.parent_bus->parent;
|
|
DeviceState *hcd = dev->qdev.parent_bus->parent;
|
|
const USBDesc *desc = usb_device_get_usb_desc(dev);
|
|
const USBDesc *desc = usb_device_get_usb_desc(dev);
|
|
int index = desc->id.iSerialNumber;
|
|
int index = desc->id.iSerialNumber;
|
|
- char serial[64];
|
|
|
|
- char *path;
|
|
|
|
- int dst;
|
|
|
|
|
|
+ char *path, *serial;
|
|
|
|
|
|
if (dev->serial) {
|
|
if (dev->serial) {
|
|
/* 'serial' usb bus property has priority if present */
|
|
/* 'serial' usb bus property has priority if present */
|
|
@@ -567,14 +565,16 @@ void usb_desc_create_serial(USBDevice *dev)
|
|
}
|
|
}
|
|
|
|
|
|
assert(index != 0 && desc->str[index] != NULL);
|
|
assert(index != 0 && desc->str[index] != NULL);
|
|
- dst = snprintf(serial, sizeof(serial), "%s", desc->str[index]);
|
|
|
|
path = qdev_get_dev_path(hcd);
|
|
path = qdev_get_dev_path(hcd);
|
|
if (path) {
|
|
if (path) {
|
|
- dst += snprintf(serial+dst, sizeof(serial)-dst, "-%s", path);
|
|
|
|
|
|
+ serial = g_strdup_printf("%s-%s-%s", desc->str[index],
|
|
|
|
+ path, dev->port->path);
|
|
|
|
+ } else {
|
|
|
|
+ serial = g_strdup_printf("%s-%s", desc->str[index], dev->port->path);
|
|
}
|
|
}
|
|
- dst += snprintf(serial+dst, sizeof(serial)-dst, "-%s", dev->port->path);
|
|
|
|
usb_desc_set_string(dev, index, serial);
|
|
usb_desc_set_string(dev, index, serial);
|
|
g_free(path);
|
|
g_free(path);
|
|
|
|
+ g_free(serial);
|
|
}
|
|
}
|
|
|
|
|
|
const char *usb_desc_get_string(USBDevice *dev, uint8_t index)
|
|
const char *usb_desc_get_string(USBDevice *dev, uint8_t index)
|