diff options
author | Martin Roth <martinroth@google.com> | 2016-01-06 21:18:21 -0700 |
---|---|---|
committer | Martin Roth <martinroth@google.com> | 2016-01-08 17:21:59 +0100 |
commit | fecc24af049bfec00efce49858e228dd9ab2d11c (patch) | |
tree | 5daf202da30d149143f7d38213a16638cbce7272 | |
parent | b95a0745865a084e5426b9930eba0dadd3301c23 (diff) | |
download | coreboot-fecc24af049bfec00efce49858e228dd9ab2d11c.tar.xz |
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>
-rw-r--r-- | src/vendorcode/amd/agesa/f15tn/Proc/Mem/Ps/mpmaxfreq.c | 2 |
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]; } |