From: OpenOCD-Gerrit <ope...@us...> - 2022-11-11 20:23:39
|
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 fb23c9c10bd161ac05b85e73ad91676063592b96 (commit) from 09731b69a6f50c7e0e2f6fa0ba245374034217cb (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 fb23c9c10bd161ac05b85e73ad91676063592b96 Author: Antonio Borneo <bor...@gm...> Date: Fri Nov 4 00:32:20 2022 +0100 rtos: hwthread: fix clang error core.NullDereference Clang spots a potential NULL pointer dereferencing that is instead an incorrect use of an array of pointers: src/rtos/hwthread.c:254:32: warning: Dereference of null pointer [core.NullDereference] (*rtos_reg_list)[j].number = (*reg_list)[i].number; ^~~~~~~~~~~~~~~~~~~~~ The error has not been spotted before because: - this function is not called for the first core of the SMP node, - for the other cores on Cortex-A it still returns valid register value for the first 12 ARM registers, then it diverges. Also Valgrind does not spot any issue at runtime. Address the array correctly. While there, use DIV_ROUND_UP() macro for the computation. Change-Id: Ib87e60e0edfd9671091f5dcfa9aedaf1aed800d1 Signed-off-by: Antonio Borneo <bor...@gm...> Reviewed-on: https://review.openocd.org/c/openocd/+/7337 Tested-by: jenkins Reviewed-by: Tomas Vanek <va...@fb...> diff --git a/src/rtos/hwthread.c b/src/rtos/hwthread.c index e5eaf425f..50e7bae51 100644 --- a/src/rtos/hwthread.c +++ b/src/rtos/hwthread.c @@ -255,10 +255,10 @@ static int hwthread_get_thread_reg_list(struct rtos *rtos, int64_t thread_id, for (int i = 0; i < reg_list_size; i++) { if (!reg_list[i] || reg_list[i]->exist == false || reg_list[i]->hidden) continue; - (*rtos_reg_list)[j].number = (*reg_list)[i].number; - (*rtos_reg_list)[j].size = (*reg_list)[i].size; - memcpy((*rtos_reg_list)[j].value, (*reg_list)[i].value, - ((*reg_list)[i].size + 7) / 8); + (*rtos_reg_list)[j].number = reg_list[i]->number; + (*rtos_reg_list)[j].size = reg_list[i]->size; + memcpy((*rtos_reg_list)[j].value, reg_list[i]->value, + DIV_ROUND_UP(reg_list[i]->size, 8)); j++; } free(reg_list); ----------------------------------------------------------------------- Summary of changes: src/rtos/hwthread.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) hooks/post-receive -- Main OpenOCD repository |