summaryrefslogtreecommitdiff
path: root/src/vendorcode/amd/agesa
diff options
context:
space:
mode:
authorMartin Roth <martinroth@google.com>2016-01-06 21:18:21 -0700
committerMartin Roth <martinroth@google.com>2016-01-08 17:21:59 +0100
commitfecc24af049bfec00efce49858e228dd9ab2d11c (patch)
tree5daf202da30d149143f7d38213a16638cbce7272 /src/vendorcode/amd/agesa
parentb95a0745865a084e5426b9930eba0dadd3301c23 (diff)
vendorcode/amd/agesa/f15tn: Fix out of bounds read on on memory voltage
I think this has a fairly low likelyhood of happening, but if AGESA can't determine the voltage of the memory, it assignes a value of 255 to the variable that it later uses to read from an 3-value array. There is an assert, but that doesn't halt AGESA, so it would use some random value. If the voltage can't be determined, fall back to 1.5v as the default value. Fixes coverity warning 1294803 - Out-of-bounds read Change-Id: Ib9e568175edbdf55a7a4c35055da7169ea7f2ede Signed-off-by: Martin Roth <martinroth@google.com> Reviewed-on: https://review.coreboot.org/12855 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Diffstat (limited to 'src/vendorcode/amd/agesa')
-rw-r--r--src/vendorcode/amd/agesa/f15tn/Proc/Mem/Ps/mpmaxfreq.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/vendorcode/amd/agesa/f15tn/Proc/Mem/Ps/mpmaxfreq.c b/src/vendorcode/amd/agesa/f15tn/Proc/Mem/Ps/mpmaxfreq.c
index a9fc1dca4c..76d7e518e0 100644
--- a/src/vendorcode/amd/agesa/f15tn/Proc/Mem/Ps/mpmaxfreq.c
+++ b/src/vendorcode/amd/agesa/f15tn/Proc/Mem/Ps/mpmaxfreq.c
@@ -286,6 +286,8 @@ MemPGetMaxFreqSupported (
IDS_HDT_CONSOLE (MEM_FLOW, "\n");
}
ASSERT (DDR3Voltage <= VOLT1_25_ENCODED_VAL);
+ if (DDR3Voltage > VOLT1_25_ENCODED_VAL)
+ DDR3Voltage = VOLT1_5_ENCODED_VAL; // if unknown, fall back to 1.5v
MaxFreqSupported = SpeedArray[DDR3Voltage];
}