diff -uNrp trunk.orig/usb-linux.c trunk/usb-linux.c --- trunk.orig/usb-linux.c 2008-09-17 02:11:53.000000000 +0200 +++ trunk/usb-linux.c 2008-09-17 14:18:10.000000000 +0200 @@ -1449,20 +1449,20 @@ static int usb_host_info_device(void *op return 0; } -static void dec2str(int val, char *str) +static void dec2str(int val, char *str, size_t len) { if (val == -1) - strcpy(str, "*"); + strncpy(str, "*", len); else - sprintf(str, "%d", val); + snprintf(str, len, "%d", val); } -static void hex2str(int val, char *str) +static void hex2str(int val, char *str, size_t len) { if (val == -1) - strcpy(str, "*"); + strncpy(str, "*", len); else - sprintf(str, "%x", val); + snprintf(str, len, "%04x", val); } void usb_host_info(void) @@ -1474,12 +1474,12 @@ void usb_host_info(void) if (usb_auto_filter) term_printf(" Auto filters:\n"); for (f = usb_auto_filter; f; f = f->next) { - char bus[10], addr[10], vid[10], pid[10]; - dec2str(f->bus_num, bus); - dec2str(f->addr, addr); - hex2str(f->vendor_id, vid); - hex2str(f->product_id, pid); - term_printf(" Device %s.%s ID %s:%s\n", bus, addr, vid, pid); + char bus[10], addr[10], vid[5], pid[5]; + dec2str(f->bus_num, bus, 10); + dec2str(f->addr, addr, 10); + hex2str(f->vendor_id, vid, 5); + hex2str(f->product_id, pid, 5); + term_printf(" Device %s.%s ID %s:%s\n", bus, addr, vid, pid); } }