Fix jtag_usb_location_equal for path members > 9
In case an USB location path contains path members larger than 9. The string_length variable is regardless decremented by 2 with assumption that the member is one digit length. For exmaple 1-12.2 will fail. This patch uses strlen to calculate digits in a path member. Change-Id: I9c26a04d0c6af13fec65157f222599497294e2b2 Signed-off-by: Krzysztof Hockuba <krzysztof@hockuba.eu> Reviewed-on: http://openocd.zylin.com/6048 Tested-by: jenkins Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
This commit is contained in:
parent
f68ade529a
commit
84a2302af7
|
@ -50,7 +50,7 @@ bool jtag_usb_location_equal(uint8_t dev_bus, uint8_t *port_path,
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
string_length -= 1;
|
string_length -= strnlen(ptr, string_length);
|
||||||
/* check bus mismatch */
|
/* check bus mismatch */
|
||||||
if (atoi(ptr) != dev_bus)
|
if (atoi(ptr) != dev_bus)
|
||||||
goto done;
|
goto done;
|
||||||
|
@ -68,7 +68,7 @@ bool jtag_usb_location_equal(uint8_t dev_bus, uint8_t *port_path,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
path_step++;
|
path_step++;
|
||||||
string_length -= 2;
|
string_length -= strnlen(ptr, string_length) + 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* walked the full path, all elements match */
|
/* walked the full path, all elements match */
|
||||||
|
|
Loading…
Reference in New Issue