summaryrefslogtreecommitdiffstats
path: root/src/vendorcode
diff options
context:
space:
mode:
authorEdward O'Callaghan <eocallaghan@alterapraxis.com>2014-05-22 03:36:22 +1000
committerMarc Jones <marc.jones@se-eng.com>2014-05-21 21:35:16 +0200
commit3312ed7e7a0b3269d6559207cdf9ed932ffecd31 (patch)
tree226a81ddc59f953ce12921d9fce566e100630ca0 /src/vendorcode
parent2c9e3706469e65629d6e74b5a43df9277f176933 (diff)
downloadcoreboot-staging-3312ed7e7a0b3269d6559207cdf9ed932ffecd31.zip
coreboot-staging-3312ed7e7a0b3269d6559207cdf9ed932ffecd31.tar.gz
amd/agesa/f1?/Lib/amdlib.c: Integer overflow in loop construct
The semantics of this loop relies on an integer overflow in Index >=0 that implies a return value of (UINT8)-1 which around wraps to 0xFF, or VOLT_UNSUPPORTED. Change-Id: I44d68973d0a80093350b2a8a4d3b46bfbb57917a Signed-off-by: Edward O'Callaghan <eocallaghan@alterapraxis.com> Reviewed-on: http://review.coreboot.org/5801 Tested-by: build bot (Jenkins) Reviewed-by: Marc Jones <marc.jones@se-eng.com>
Diffstat (limited to 'src/vendorcode')
-rw-r--r--src/vendorcode/amd/agesa/f10/Lib/amdlib.c6
-rw-r--r--src/vendorcode/amd/agesa/f12/Lib/amdlib.c6
-rw-r--r--src/vendorcode/amd/agesa/f14/Lib/amdlib.c6
-rw-r--r--src/vendorcode/amd/agesa/f15/Lib/amdlib.c6
-rw-r--r--src/vendorcode/amd/agesa/f15tn/Lib/amdlib.c6
5 files changed, 15 insertions, 15 deletions
diff --git a/src/vendorcode/amd/agesa/f10/Lib/amdlib.c b/src/vendorcode/amd/agesa/f10/Lib/amdlib.c
index d88eee7..83e6a00 100644
--- a/src/vendorcode/amd/agesa/f10/Lib/amdlib.c
+++ b/src/vendorcode/amd/agesa/f10/Lib/amdlib.c
@@ -344,11 +344,11 @@ LibAmdBitScanReverse (
IN UINT32 value
)
{
- UINTN Index;
+ UINT8 Index;
for (Index = 31; Index >= 0; Index--){
- if (value & (1 << Index)) break;
+ if (value & (1 << Index)) return Index;
}
- return (UINT8) Index;
+ return 0xFF;
}
VOID
LibAmdMsrRead (
diff --git a/src/vendorcode/amd/agesa/f12/Lib/amdlib.c b/src/vendorcode/amd/agesa/f12/Lib/amdlib.c
index cb8f695..f88eb98 100644
--- a/src/vendorcode/amd/agesa/f12/Lib/amdlib.c
+++ b/src/vendorcode/amd/agesa/f12/Lib/amdlib.c
@@ -348,11 +348,11 @@ LibAmdBitScanReverse (
IN UINT32 value
)
{
- UINTN Index;
+ UINT8 Index;
for (Index = 31; Index >= 0; Index--){
- if (value & (1 << Index)) break;
+ if (value & (1 << Index)) return Index;
}
- return (UINT8) Index;
+ return 0xFF;
}
VOID
LibAmdMsrRead (
diff --git a/src/vendorcode/amd/agesa/f14/Lib/amdlib.c b/src/vendorcode/amd/agesa/f14/Lib/amdlib.c
index 31b3f1e..c1fa494 100644
--- a/src/vendorcode/amd/agesa/f14/Lib/amdlib.c
+++ b/src/vendorcode/amd/agesa/f14/Lib/amdlib.c
@@ -348,11 +348,11 @@ LibAmdBitScanReverse (
IN UINT32 value
)
{
- UINTN Index;
+ UINT8 Index;
for (Index = 31; Index >= 0; Index--){
- if (value & (1 << Index)) break;
+ if (value & (1 << Index)) return Index;
}
- return (UINT8) Index;
+ return 0xFF;
}
VOID
LibAmdMsrRead (
diff --git a/src/vendorcode/amd/agesa/f15/Lib/amdlib.c b/src/vendorcode/amd/agesa/f15/Lib/amdlib.c
index e51a971..1180ad2 100644
--- a/src/vendorcode/amd/agesa/f15/Lib/amdlib.c
+++ b/src/vendorcode/amd/agesa/f15/Lib/amdlib.c
@@ -348,11 +348,11 @@ LibAmdBitScanReverse (
IN UINT32 value
)
{
- UINTN Index;
+ UINT8 Index;
for (Index = 31; Index >= 0; Index--){
- if (value & (1 << Index)) break;
+ if (value & (1 << Index)) return Index;
}
- return (UINT8) Index;
+ return 0xFF;
}
UINT64
diff --git a/src/vendorcode/amd/agesa/f15tn/Lib/amdlib.c b/src/vendorcode/amd/agesa/f15tn/Lib/amdlib.c
index 55adc8a..9646e6d 100644
--- a/src/vendorcode/amd/agesa/f15tn/Lib/amdlib.c
+++ b/src/vendorcode/amd/agesa/f15tn/Lib/amdlib.c
@@ -359,11 +359,11 @@ LibAmdBitScanReverse (
IN UINT32 value
)
{
- UINTN Index;
+ UINT8 Index;
for (Index = 31; Index >= 0; Index--){
- if (value & (1 << Index)) break;
+ if (value & (1 << Index)) return Index;
}
- return (UINT8) Index;
+ return 0xFF;
}
VOID
LibAmdMsrRead (
OpenPOWER on IntegriCloud