From 599f004b278f597dcfd02a56a72d9393b5f0c55a Mon Sep 17 00:00:00 2001 From: Heyi Guo Date: Sat, 23 Apr 2016 22:39:59 +0800 Subject: [PATCH] ArmPkg/Gic: Fix boundary checking bug mGicNumInterrupts is the total number of interrupts, so the interrupt ID equal to mGicNumInterrupts is also invalid. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Heyi Guo Reviewed-by: Ard Biesheuvel --- ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c | 2 +- ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c | 8 ++++---- ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c b/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c index a9ccef5e1c..be77b8361c 100644 --- a/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c +++ b/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c @@ -62,7 +62,7 @@ RegisterInterruptSource ( IN HARDWARE_INTERRUPT_HANDLER Handler ) { - if (Source > mGicNumInterrupts) { + if (Source >= mGicNumInterrupts) { ASSERT(FALSE); return EFI_UNSUPPORTED; } diff --git a/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c b/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c index e649ac1bc6..036eb5cd6b 100644 --- a/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c +++ b/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c @@ -50,7 +50,7 @@ GicV2EnableInterruptSource ( IN HARDWARE_INTERRUPT_SOURCE Source ) { - if (Source > mGicNumInterrupts) { + if (Source >= mGicNumInterrupts) { ASSERT(FALSE); return EFI_UNSUPPORTED; } @@ -77,7 +77,7 @@ GicV2DisableInterruptSource ( IN HARDWARE_INTERRUPT_SOURCE Source ) { - if (Source > mGicNumInterrupts) { + if (Source >= mGicNumInterrupts) { ASSERT(FALSE); return EFI_UNSUPPORTED; } @@ -106,7 +106,7 @@ GicV2GetInterruptSourceState ( IN BOOLEAN *InterruptState ) { - if (Source > mGicNumInterrupts) { + if (Source >= mGicNumInterrupts) { ASSERT(FALSE); return EFI_UNSUPPORTED; } @@ -134,7 +134,7 @@ GicV2EndOfInterrupt ( IN HARDWARE_INTERRUPT_SOURCE Source ) { - if (Source > mGicNumInterrupts) { + if (Source >= mGicNumInterrupts) { ASSERT(FALSE); return EFI_UNSUPPORTED; } diff --git a/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c b/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c index 4afa3d5a09..50fa56262e 100644 --- a/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c +++ b/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c @@ -40,7 +40,7 @@ GicV3EnableInterruptSource ( IN HARDWARE_INTERRUPT_SOURCE Source ) { - if (Source > mGicNumInterrupts) { + if (Source >= mGicNumInterrupts) { ASSERT(FALSE); return EFI_UNSUPPORTED; } @@ -67,7 +67,7 @@ GicV3DisableInterruptSource ( IN HARDWARE_INTERRUPT_SOURCE Source ) { - if (Source > mGicNumInterrupts) { + if (Source >= mGicNumInterrupts) { ASSERT(FALSE); return EFI_UNSUPPORTED; } @@ -96,7 +96,7 @@ GicV3GetInterruptSourceState ( IN BOOLEAN *InterruptState ) { - if (Source > mGicNumInterrupts) { + if (Source >= mGicNumInterrupts) { ASSERT(FALSE); return EFI_UNSUPPORTED; } @@ -124,7 +124,7 @@ GicV3EndOfInterrupt ( IN HARDWARE_INTERRUPT_SOURCE Source ) { - if (Source > mGicNumInterrupts) { + if (Source >= mGicNumInterrupts) { ASSERT(FALSE); return EFI_UNSUPPORTED; }