diff options
author | Nico Huber <nico.huber@secunet.com> | 2018-09-13 10:49:54 +0200 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2018-09-14 20:16:45 +0000 |
commit | bb0ab9e5319254f768d54f5f8feecd453fe1181f (patch) | |
tree | 2813b2009eb88e447d8282c7ed51e22cb56674fc | |
parent | 26036d9db342ccee13b8dfaab9aefa9956a067f1 (diff) |
device/ddr3: Prevent overflow when adding SMBUS Table 17 entries
Change-Id: If84c6849011106b2a50e504b79cda9cd6a3a9cc3
Signed-off-by: Nico Huber <nico.huber@secunet.com>
Reviewed-on: https://review.coreboot.org/28588
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
-rw-r--r-- | src/device/dram/ddr3.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/device/dram/ddr3.c b/src/device/dram/ddr3.c index 63ca964a5a..f27fdcb1e0 100644 --- a/src/device/dram/ddr3.c +++ b/src/device/dram/ddr3.c @@ -559,6 +559,12 @@ enum cb_err spd_add_smbios17(const u8 channel, const u8 slot, memset(mem_info, 0, sizeof(*mem_info)); } + if (mem_info->dimm_cnt >= ARRAY_SIZE(mem_info->dimm)) { + printk(BIOS_WARNING, "BUG: Too many DIMM infos for %s.\n", + __func__); + return CB_ERR; + } + dimm = &mem_info->dimm[mem_info->dimm_cnt]; if (info->size_mb) { dimm->ddr_type = MEMORY_TYPE_DDR3; |