Skip to content

Commit 3f41003

Browse files
committed
hw/arm/armsse: Assert info->num_cpus is in-bounds in armsse_realize()
In armsse_realize() we have a loop over [0, info->num_cpus), which indexes into various fixed-size arrays in the ARMSSE struct. This confuses Coverity, which warns that we might overrun those arrays (CID 1430326, 1430337, 1430371, 1430414, 1430430). This can't actually happen, because the info struct is always one of the entries in the armsse_variants[] array and num_cpus is either 1 or 2; we also already assert in armsse_init() that num_cpus is not too large. However, adding an assert to armsse_realize() like the one in armsse_init() should help Coverity figure out that these code paths aren't possible. Signed-off-by: Peter Maydell <[email protected]> Reviewed-by: Philippe Mathieu-Daudé <[email protected]> Message-id: [email protected]
1 parent cd07d7f commit 3f41003

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

hw/arm/armsse.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,8 @@ static void armsse_realize(DeviceState *dev, Error **errp)
452452
return;
453453
}
454454

455+
assert(info->num_cpus <= SSE_MAX_CPUS);
456+
455457
/* max SRAM_ADDR_WIDTH: 24 - log2(SRAM_NUM_BANK) */
456458
assert(is_power_of_2(info->sram_banks));
457459
addr_width_max = 24 - ctz32(info->sram_banks);

0 commit comments

Comments
 (0)