summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNico Huber <nico.huber@secunet.com>2018-09-13 10:49:54 +0200
committerFelix Held <felix-coreboot@felixheld.de>2018-09-14 20:16:45 +0000
commitbb0ab9e5319254f768d54f5f8feecd453fe1181f (patch)
tree2813b2009eb88e447d8282c7ed51e22cb56674fc
parent26036d9db342ccee13b8dfaab9aefa9956a067f1 (diff)
downloadcoreboot-bb0ab9e5319254f768d54f5f8feecd453fe1181f.tar.xz
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.c6
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;