From: OpenOCD-Gerrit <ope...@us...> - 2022-11-11 20:11:17
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Main OpenOCD repository". The branch, master has been updated via 7a09635735486dd2d74576b003c85c7ff16705d5 (commit) from aca3707bd8848a568dff190e155a7da31b8b5aa4 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 7a09635735486dd2d74576b003c85c7ff16705d5 Author: Antonio Borneo <bor...@gm...> Date: Wed Nov 2 00:33:16 2022 +0100 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 <bor...@gm...> Reviewed-on: https://review.openocd.org/c/openocd/+/7300 Tested-by: jenkins diff --git a/src/target/openrisc/or1k_du_adv.c b/src/target/openrisc/or1k_du_adv.c index cfb7d0ef0..e4c89e5b5 100644 --- a/src/target/openrisc/or1k_du_adv.c +++ b/src/target/openrisc/or1k_du_adv.c @@ -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; } ----------------------------------------------------------------------- Summary of changes: src/target/openrisc/or1k_du_adv.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) hooks/post-receive -- Main OpenOCD repository |