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 /src/vendorcode/amd/agesa | |
parent | b95a0745865a084e5426b9930eba0dadd3301c23 (diff) | |
download | coreboot-fecc24af049bfec00efce49858e228dd9ab2d11c.tar.gz coreboot-fecc24af049bfec00efce49858e228dd9ab2d11c.tar.bz2 coreboot-fecc24af049bfec00efce49858e228dd9ab2d11c.zip |
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.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 a9fc1dca4cf3..76d7e518e0a7 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]; } |