Commit ac4ffb5a130d1304931999781b229e926babeae6

Authored by aliguori
1 parent ad02ad6f

Don't use sprintf() or strcpy()

They are unsafe.  The current code is correct, but to be safer, we should pass
an explicit size.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>



git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5290 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 10 additions and 10 deletions
usb-linux.c
@@ -1449,20 +1449,20 @@ static int usb_host_info_device(void *opaque, int bus_num, int addr, @@ -1449,20 +1449,20 @@ static int usb_host_info_device(void *opaque, int bus_num, int addr,
1449 return 0; 1449 return 0;
1450 } 1450 }
1451 1451
1452 -static void dec2str(int val, char *str) 1452 +static void dec2str(int val, char *str, size_t size)
1453 { 1453 {
1454 if (val == -1) 1454 if (val == -1)
1455 - strcpy(str, "*"); 1455 + snprintf(str, size, "*");
1456 else 1456 else
1457 - sprintf(str, "%d", val); 1457 + snprintf(str, size, "%d", val);
1458 } 1458 }
1459 1459
1460 -static void hex2str(int val, char *str) 1460 +static void hex2str(int val, char *str, size_t size)
1461 { 1461 {
1462 if (val == -1) 1462 if (val == -1)
1463 - strcpy(str, "*"); 1463 + snprintf(str, size, "*");
1464 else 1464 else
1465 - sprintf(str, "%x", val); 1465 + snprintf(str, size, "%x", val);
1466 } 1466 }
1467 1467
1468 void usb_host_info(void) 1468 void usb_host_info(void)
@@ -1475,10 +1475,10 @@ void usb_host_info(void) @@ -1475,10 +1475,10 @@ void usb_host_info(void)
1475 term_printf(" Auto filters:\n"); 1475 term_printf(" Auto filters:\n");
1476 for (f = usb_auto_filter; f; f = f->next) { 1476 for (f = usb_auto_filter; f; f = f->next) {
1477 char bus[10], addr[10], vid[10], pid[10]; 1477 char bus[10], addr[10], vid[10], pid[10];
1478 - dec2str(f->bus_num, bus);  
1479 - dec2str(f->addr, addr);  
1480 - hex2str(f->vendor_id, vid);  
1481 - hex2str(f->product_id, pid); 1478 + dec2str(f->bus_num, bus, sizeof(bus));
  1479 + dec2str(f->addr, addr, sizeof(addr));
  1480 + hex2str(f->vendor_id, vid, sizeof(vid));
  1481 + hex2str(f->product_id, pid, sizeof(pid));
1482 term_printf(" Device %s.%s ID %s:%s\n", bus, addr, vid, pid); 1482 term_printf(" Device %s.%s ID %s:%s\n", bus, addr, vid, pid);
1483 } 1483 }
1484 } 1484 }