openrisc: fix clang error core.CallAndMessage
Clang assumes that size could assume a value that is not 1 nor 2 nor 4. In such condition the buffer in t is allocated (size != 1) and not initialized. This triggers an error: src/target/openrisc/or1k_du_adv.c:655:14: warning: 2nd function call argument is an uninitialized value [core.CallAndMessage] crc_calc = adbg_compute_crc(crc_calc, data[i], 8); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Add the default case to cover other values of size. After this fix, clang still complains on the same line, this time misunderstanding the limits of the loop and considering that buf_bswap16() only swaps the first 16 bits, thus passing not initialized value data[2] to adbg_compute_crc() Replace malloc() with calloc() to silent it. Change-Id: I358d7fb2ebefd69255670641bd435b770762a301 Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: https://review.openocd.org/c/openocd/+/7300 Tested-by: jenkins
This commit is contained in:
parent
aca3707bd8
commit
7a09635735
|
@ -934,7 +934,7 @@ static int or1k_adv_jtag_write_memory(struct or1k_jtag *jtag_info,
|
|||
void *t = NULL;
|
||||
struct target *target = jtag_info->target;
|
||||
if ((target->endianness == TARGET_BIG_ENDIAN) && (size != 1)) {
|
||||
t = malloc(count * size * sizeof(uint8_t));
|
||||
t = calloc(count * size, sizeof(uint8_t));
|
||||
if (!t) {
|
||||
LOG_ERROR("Out of memory");
|
||||
return ERROR_FAIL;
|
||||
|
@ -947,6 +947,9 @@ static int or1k_adv_jtag_write_memory(struct or1k_jtag *jtag_info,
|
|||
case 2:
|
||||
buf_bswap16(t, buffer, size * count);
|
||||
break;
|
||||
default:
|
||||
free(t);
|
||||
return ERROR_TARGET_FAILURE;
|
||||
}
|
||||
buffer = t;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue