Use strndup instead of strdup, to handle situations where the reported length and the actual length are different, or not null terminated

This commit is contained in:
Mike Davis
2016-07-29 16:02:56 +02:00
parent 47ea4326e9
commit 4b56d88024

View File

@ -384,7 +384,7 @@ hackrf_device_list_t* ADDCALL hackrf_device_list()
serial_number_length = libusb_get_string_descriptor_ascii(usb_device, serial_descriptor_index, (unsigned char*)serial_number, sizeof(serial_number)); serial_number_length = libusb_get_string_descriptor_ascii(usb_device, serial_descriptor_index, (unsigned char*)serial_number, sizeof(serial_number));
if( serial_number_length == 32 ) { if( serial_number_length == 32 ) {
serial_number[32] = 0; serial_number[32] = 0;
list->serial_numbers[idx] = strdup(serial_number); list->serial_numbers[idx] = strndup(serial_number, serial_number_length);
} }
libusb_close(usb_device); libusb_close(usb_device);