]> git.gag.com Git - fw/openocd/commitdiff
Fix jtag_usb_location_equal for path members > 9
authorKrzysztof Hockuba <krzysztof.hockuba@itpartners.com.pl>
Wed, 3 Feb 2021 22:01:29 +0000 (23:01 +0100)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sat, 13 Feb 2021 13:08:12 +0000 (13:08 +0000)
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>
src/jtag/drivers/jtag_usb_common.c

index 969ea840624c7f90ba4ec0e73e98c7ca96225782..309f8c462fbca818a4656e400d7a2027c234502a 100644 (file)
@@ -50,7 +50,7 @@ bool jtag_usb_location_equal(uint8_t dev_bus, uint8_t *port_path,
                goto done;
        }
 
-       string_length -= 1;
+       string_length -= strnlen(ptr, string_length);
        /* check bus mismatch */
        if (atoi(ptr) != dev_bus)
                goto done;
@@ -68,7 +68,7 @@ bool jtag_usb_location_equal(uint8_t dev_bus, uint8_t *port_path,
                        break;
 
                path_step++;
-               string_length -= 2;
+               string_length -= strnlen(ptr, string_length) + 1;
        };
 
        /* walked the full path, all elements match */