This is an automated email from Gerrit. "Ian Thompson <ia...@cadence.com>" just uploaded a new patch set to Gerrit, which you can find at https://review.openocd.org/c/openocd/+/7211
-- gerrit commit 2fed25f0fbcee09e64d753959fabe94e1423ce92 Author: Ian Thompson <ia...@cadence.com> 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...@cadence.com> Change-Id: Ia9ab53336537adebf99f8156f481ca8279a7cd5d diff --git a/src/target/xtensa/xtensa.c b/src/target/xtensa/xtensa.c index 1691deeebb..dd6c22f3ab 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 %" TARGET_PRIdADDR " 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; } --