Browse Source

jtag/tcl: fix incorrect memcpy in jim_newtap_expected_id

Found by clang static checker.

On the very first call of jim_newtap_expected_id() pTap->expected_ids
and expected_len are null, and there's nothing to copy. This patch
changes this cryptic code to use realloc() instead.

Change-Id: Ic0b5140d08257a906f15b55a2ae64db7bc06d5f1
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Reviewed-on: http://openocd.zylin.com/2562
Reviewed-by: Stian Skjelstad <stian@nixia.no>
Tested-by: jenkins
tags/v0.9.0-rc1
Paul Fertser 9 years ago
parent
commit
20fcd0729e
1 changed files with 5 additions and 10 deletions
  1. +5
    -10
      src/jtag/tcl.c

+ 5
- 10
src/jtag/tcl.c View File

@@ -434,20 +434,15 @@ static int jim_newtap_expected_id(Jim_Nvp *n, Jim_GetOptInfo *goi,
return e;
}

unsigned expected_len = sizeof(uint32_t) * pTap->expected_ids_cnt;
uint32_t *new_expected_ids = malloc(expected_len + sizeof(uint32_t));
if (new_expected_ids == NULL) {
uint32_t *p = realloc(pTap->expected_ids,
(pTap->expected_ids_cnt + 1) * sizeof(uint32_t));
if (!p) {
Jim_SetResultFormatted(goi->interp, "no memory");
return JIM_ERR;
}

memcpy(new_expected_ids, pTap->expected_ids, expected_len);

new_expected_ids[pTap->expected_ids_cnt] = w;

free(pTap->expected_ids);
pTap->expected_ids = new_expected_ids;
pTap->expected_ids_cnt++;
pTap->expected_ids = p;
pTap->expected_ids[pTap->expected_ids_cnt++] = w;

return JIM_OK;
}


Loading…
Cancel
Save