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;
}
--