usb-bus: use snprintf
Avoid this warning from OpenBSD linker: LINK i386-softmmu/qemu ../usb-bus.o(.text+0x27c): In function `usb_get_fw_dev_path': /src/qemu/hw/usb-bus.c:294: warning: sprintf() is often misused, please use snprintf() Signed-off-by: Blue Swirl <blauwirbel@gmail.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
ee59e6b3bf
commit
ea87e95f8f
12
hw/usb-bus.c
12
hw/usb-bus.c
@ -298,20 +298,22 @@ static char *usb_get_fw_dev_path(DeviceState *qdev)
|
|||||||
{
|
{
|
||||||
USBDevice *dev = DO_UPCAST(USBDevice, qdev, qdev);
|
USBDevice *dev = DO_UPCAST(USBDevice, qdev, qdev);
|
||||||
char *fw_path, *in;
|
char *fw_path, *in;
|
||||||
int pos = 0;
|
ssize_t pos = 0, fw_len;
|
||||||
long nr;
|
long nr;
|
||||||
|
|
||||||
fw_path = qemu_malloc(32 + strlen(dev->port->path) * 6);
|
fw_len = 32 + strlen(dev->port->path) * 6;
|
||||||
|
fw_path = qemu_malloc(fw_len);
|
||||||
in = dev->port->path;
|
in = dev->port->path;
|
||||||
while (true) {
|
while (fw_len - pos > 0) {
|
||||||
nr = strtol(in, &in, 10);
|
nr = strtol(in, &in, 10);
|
||||||
if (in[0] == '.') {
|
if (in[0] == '.') {
|
||||||
/* some hub between root port and device */
|
/* some hub between root port and device */
|
||||||
pos += sprintf(fw_path + pos, "hub@%ld/", nr);
|
pos += snprintf(fw_path + pos, fw_len - pos, "hub@%ld/", nr);
|
||||||
in++;
|
in++;
|
||||||
} else {
|
} else {
|
||||||
/* the device itself */
|
/* the device itself */
|
||||||
pos += sprintf(fw_path + pos, "%s@%ld", qdev_fw_name(qdev), nr);
|
pos += snprintf(fw_path + pos, fw_len - pos, "%s@%ld",
|
||||||
|
qdev_fw_name(qdev), nr);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user