helper/binarybuffer: fix clang static analyzer warnings
Writing bits to an uninitialized buffer generated false warnings. Zero buffers before setting them by buf_set_u32|64() (do it only if bit-by-bit copy loop is used, zeroed buffer is not necessary if a fast path write is used) Change-Id: I2f7f8ddb45b0cbd08d3e249534fc51f4b5cc6694 Signed-off-by: Tomas Vanek <vanekt@fbl.cz> Reviewed-on: http://openocd.zylin.com/5383 Tested-by: jenkins Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
This commit is contained in:
@@ -280,7 +280,7 @@ static uint32_t dtmcontrol_scan(struct target *target, uint32_t out)
|
||||
{
|
||||
struct scan_field field;
|
||||
uint8_t in_value[4];
|
||||
uint8_t out_value[4];
|
||||
uint8_t out_value[4] = { 0 };
|
||||
|
||||
buf_set_u32(out_value, 0, 32, out);
|
||||
|
||||
@@ -422,7 +422,7 @@ static dbus_status_t dbus_scan(struct target *target, uint16_t *address_in,
|
||||
{
|
||||
riscv011_info_t *info = get_info(target);
|
||||
uint8_t in[8] = {0};
|
||||
uint8_t out[8];
|
||||
uint8_t out[8] = {0};
|
||||
struct scan_field field = {
|
||||
.num_bits = info->addrbits + DBUS_OP_SIZE + DBUS_DATA_SIZE,
|
||||
.out_value = out,
|
||||
|
||||
@@ -402,7 +402,7 @@ static uint32_t dtmcontrol_scan(struct target *target, uint32_t out)
|
||||
{
|
||||
struct scan_field field;
|
||||
uint8_t in_value[4];
|
||||
uint8_t out_value[4];
|
||||
uint8_t out_value[4] = { 0 };
|
||||
|
||||
buf_set_u32(out_value, 0, 32, out);
|
||||
|
||||
@@ -468,6 +468,7 @@ static dmi_status_t dmi_scan(struct target *target, uint32_t *address_in,
|
||||
}
|
||||
|
||||
memset(in, 0, num_bytes);
|
||||
memset(out, 0, num_bytes);
|
||||
|
||||
assert(info->abits != 0);
|
||||
|
||||
|
||||
@@ -203,7 +203,7 @@ static uint32_t dtmcontrol_scan(struct target *target, uint32_t out)
|
||||
{
|
||||
struct scan_field field;
|
||||
uint8_t in_value[4];
|
||||
uint8_t out_value[4];
|
||||
uint8_t out_value[4] = { 0 };
|
||||
|
||||
buf_set_u32(out_value, 0, 32, out);
|
||||
|
||||
@@ -540,7 +540,7 @@ int riscv_add_breakpoint(struct target *target, struct breakpoint *breakpoint)
|
||||
return ERROR_FAIL;
|
||||
}
|
||||
|
||||
uint8_t buff[4];
|
||||
uint8_t buff[4] = { 0 };
|
||||
buf_set_u32(buff, 0, breakpoint->length * CHAR_BIT, breakpoint->length == 4 ? ebreak() : ebreak_c());
|
||||
int const retval = target_write_memory(target, breakpoint->address, 2, breakpoint->length / 2, buff);
|
||||
|
||||
@@ -1047,7 +1047,7 @@ static int riscv_run_algorithm(struct target *target, int num_mem_params,
|
||||
|
||||
/* Disable Interrupts before attempting to run the algorithm. */
|
||||
uint64_t current_mstatus;
|
||||
uint8_t mstatus_bytes[8];
|
||||
uint8_t mstatus_bytes[8] = { 0 };
|
||||
|
||||
LOG_DEBUG("Disabling Interrupts");
|
||||
struct reg *reg_mstatus = register_get_by_name(target->reg_cache,
|
||||
@@ -1103,7 +1103,7 @@ static int riscv_run_algorithm(struct target *target, int num_mem_params,
|
||||
reg_mstatus->type->set(reg_mstatus, mstatus_bytes);
|
||||
|
||||
/* Restore registers */
|
||||
uint8_t buf[8];
|
||||
uint8_t buf[8] = { 0 };
|
||||
buf_set_u64(buf, 0, info->xlen[0], saved_pc);
|
||||
if (reg_pc->type->set(reg_pc, buf) != ERROR_OK)
|
||||
return ERROR_FAIL;
|
||||
|
||||
Reference in New Issue
Block a user