From: OpenOCD-Gerrit <ope...@us...> - 2022-09-23 21:26:02
|
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 53d17e790128803a0fed453c4945c07b3377c4d3 (commit) from 44ed26a1db3b9e0ca9dc1000e967533b1c371ee3 (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 53d17e790128803a0fed453c4945c07b3377c4d3 Author: Ian Thompson <ia...@ca...> Date: Mon Sep 19 12:39:50 2022 -0700 target/xtensa: fix final clang analyzer warning Reworked xtensa_read_memory() logic to always allocate and initialize working buffer with sufficient padding. Signed-off-by: Ian Thompson <ia...@ca...> Change-Id: Ia9ab53336537adebf99f8156f481ca8279a7cd5d Reviewed-on: https://review.openocd.org/c/openocd/+/7211 Tested-by: jenkins Reviewed-by: Antonio Borneo <bor...@gm...> Reviewed-by: Erhan Kurubas <erh...@es...> diff --git a/src/target/xtensa/xtensa.c b/src/target/xtensa/xtensa.c index 1691deeeb..4dfff6ab4 100644 --- a/src/target/xtensa/xtensa.c +++ b/src/target/xtensa/xtensa.c @@ -1738,15 +1738,12 @@ int xtensa_read_memory(struct target *target, target_addr_t address, uint32_t si } } - if (addrstart_al == address && addrend_al == address + (size * count)) { - albuff = buffer; - } else { - albuff = malloc(addrend_al - addrstart_al); - if (!albuff) { - LOG_TARGET_ERROR(target, "Out of memory allocating %" TARGET_PRIdADDR " bytes!", - addrend_al - addrstart_al); - return ERROR_TARGET_RESOURCE_NOT_AVAILABLE; - } + unsigned int alloc_bytes = ALIGN_UP(addrend_al - addrstart_al, sizeof(uint32_t)); + albuff = calloc(alloc_bytes, 1); + if (!albuff) { + LOG_TARGET_ERROR(target, "Out of memory allocating %" PRId64 " bytes!", + addrend_al - addrstart_al); + return ERROR_TARGET_RESOURCE_NOT_AVAILABLE; } /* We're going to use A3 here */ @@ -1795,11 +1792,8 @@ int xtensa_read_memory(struct target *target, target_addr_t address, uint32_t si if (bswap) buf_bswap32(albuff, albuff, addrend_al - addrstart_al); - if (albuff != buffer) { - memcpy(buffer, albuff + (address & 3), (size * count)); - free(albuff); - } - + memcpy(buffer, albuff + (address & 3), (size * count)); + free(albuff); return res; } @@ -1855,7 +1849,7 @@ int xtensa_write_memory(struct target *target, albuff = malloc(addrend_al - addrstart_al); } if (!albuff) { - LOG_TARGET_ERROR(target, "Out of memory allocating %" TARGET_PRIdADDR " bytes!", + LOG_TARGET_ERROR(target, "Out of memory allocating %" PRId64 " bytes!", addrend_al - addrstart_al); return ERROR_TARGET_RESOURCE_NOT_AVAILABLE; } ----------------------------------------------------------------------- Summary of changes: src/target/xtensa/xtensa.c | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) hooks/post-receive -- Main OpenOCD repository |