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 <ianst@cadence.com> Change-Id: Ia9ab53336537adebf99f8156f481ca8279a7cd5d Reviewed-on: https://review.openocd.org/c/openocd/+/7211 Tested-by: jenkins Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-by: Erhan Kurubas <erhan.kurubas@espressif.com>
This commit is contained in:
parent
44ed26a1db
commit
53d17e7901
|
@ -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)) {
|
unsigned int alloc_bytes = ALIGN_UP(addrend_al - addrstart_al, sizeof(uint32_t));
|
||||||
albuff = buffer;
|
albuff = calloc(alloc_bytes, 1);
|
||||||
} else {
|
if (!albuff) {
|
||||||
albuff = malloc(addrend_al - addrstart_al);
|
LOG_TARGET_ERROR(target, "Out of memory allocating %" PRId64 " bytes!",
|
||||||
if (!albuff) {
|
addrend_al - addrstart_al);
|
||||||
LOG_TARGET_ERROR(target, "Out of memory allocating %" TARGET_PRIdADDR " bytes!",
|
return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
|
||||||
addrend_al - addrstart_al);
|
|
||||||
return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We're going to use A3 here */
|
/* 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)
|
if (bswap)
|
||||||
buf_bswap32(albuff, albuff, addrend_al - addrstart_al);
|
buf_bswap32(albuff, albuff, addrend_al - addrstart_al);
|
||||||
if (albuff != buffer) {
|
memcpy(buffer, albuff + (address & 3), (size * count));
|
||||||
memcpy(buffer, albuff + (address & 3), (size * count));
|
free(albuff);
|
||||||
free(albuff);
|
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1855,7 +1849,7 @@ int xtensa_write_memory(struct target *target,
|
||||||
albuff = malloc(addrend_al - addrstart_al);
|
albuff = malloc(addrend_al - addrstart_al);
|
||||||
}
|
}
|
||||||
if (!albuff) {
|
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);
|
addrend_al - addrstart_al);
|
||||||
return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
|
return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue