drivers/cmsis-dap: Correct the DAP protocol parameter parsing error

Fixes: 01030fb893 (drivers/cmsis-dap: tidy up buffer access)

Change-Id: Id192d3930a89980d641058b6444d12caec19ce6f
Signed-off-by: Hongbin Ji <longma@orbbec.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6954
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: jihongbin <jhb_ee@163.com>
This commit is contained in:
jihongbin 2022-04-29 17:03:15 +08:00 committed by Tomas Vanek
parent 12d1ad0c75
commit 66335683fe
1 changed files with 7 additions and 7 deletions

View File

@ -1405,18 +1405,18 @@ static void debug_parse_cmsis_buf(const uint8_t *cmd, int cmdlen)
for (int i = 0; i < cmdlen; ++i)
printf(" %02x", cmd[i]);
printf("\n");
switch (cmd[1]) {
switch (cmd[0]) {
case CMD_DAP_JTAG_SEQ: {
printf("cmsis-dap jtag sequence command %02x (n=%d)\n", cmd[1], cmd[2]);
printf("cmsis-dap jtag sequence command %02x (n=%d)\n", cmd[0], cmd[1]);
/*
* #2 = number of sequences
* #3 = sequence info 1
* #4...4+n_bytes-1 = sequence 1
* #1 = number of sequences
* #2 = sequence info 1
* #3...4+n_bytes-1 = sequence 1
* #4+n_bytes = sequence info 2
* #5+n_bytes = sequence 2 (single bit)
*/
int pos = 3;
for (int seq = 0; seq < cmd[2]; ++seq) {
int pos = 2;
for (int seq = 0; seq < cmd[1]; ++seq) {
uint8_t info = cmd[pos++];
int len = info & DAP_JTAG_SEQ_TCK;
if (len == 0)