Prevent segfault when the USB product string cannot be retrieved
In the CMSIS-DAP driver, if nothing has been specified by the user, an attempt is made to find the first device with the (mandatory) substring "CMSIS-DAP" in any USB device's product string. However, while (usually) all devices can be traversed, devices the user does not have permission for cannot be read the product string from, resulting in a NULL pointer. Trying to find the substring "CMSIS-DAP" causes a segementation fault then. This has also been filed as Trac bug #67: https://sourceforge.net/apps/trac/openocd/ticket/67 Change-Id: Idfc9f072e34152e9af99fe1c8ec88c99dea4624c Signed-off-by: Jörg Wunsch <openocd@uriah.heep.sax.de> Reviewed-on: http://openocd.zylin.com/2044 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>__archive__
parent
6bc7ddeffd
commit
0c7db47e58
|
@ -173,7 +173,8 @@ static int cmsis_dap_usb_open(void)
|
||||||
devs = hid_enumerate(0x0, 0x0);
|
devs = hid_enumerate(0x0, 0x0);
|
||||||
cur_dev = devs;
|
cur_dev = devs;
|
||||||
while (NULL != cur_dev) {
|
while (NULL != cur_dev) {
|
||||||
if ((0 == cmsis_dap_vid[0]) && wcsstr(cur_dev->product_string, L"CMSIS-DAP")) {
|
if ((0 == cmsis_dap_vid[0]) && (NULL != cur_dev->product_string)
|
||||||
|
&& wcsstr(cur_dev->product_string, L"CMSIS-DAP")) {
|
||||||
/*
|
/*
|
||||||
if the user hasn't specified VID:PID *and*
|
if the user hasn't specified VID:PID *and*
|
||||||
product string contains "CMSIS-DAP", pick it
|
product string contains "CMSIS-DAP", pick it
|
||||||
|
|
Loading…
Reference in New Issue