From aa950314c706c55c0f4a32c41752bf5a19e8deb4 Mon Sep 17 00:00:00 2001 From: hfang Date: Tue, 21 Apr 2009 06:33:31 +0000 Subject: Fix K8 report bugs. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8139 6f19259b-4bc3-4df7-8a09-765794883524 --- IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/Ide.c | 4 ++++ IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/IdeBus.c | 13 +++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) (limited to 'IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe') diff --git a/IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/Ide.c b/IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/Ide.c index 6ffc2fcf2b..ed02b38dcf 100644 --- a/IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/Ide.c +++ b/IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/Ide.c @@ -373,6 +373,10 @@ ReassignIdeResources ( UINT16 CommandBlockBaseAddr; UINT16 ControlBlockBaseAddr; + if (IdeDev->Channel >= IdeMaxChannel) { + return EFI_INVALID_PARAMETER; + } + // // Requery IDE IO port registers' base addresses in case of the switch of // native and legacy modes diff --git a/IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/IdeBus.c b/IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/IdeBus.c index fb86e55480..b09bb8a53f 100644 --- a/IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/IdeBus.c +++ b/IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/IdeBus.c @@ -360,6 +360,14 @@ IDEBusDriverBindingStart ( EndIdeChannel = BeginningIdeChannel; BeginningIdeDevice = Node->Atapi.SlaveMaster; EndIdeDevice = BeginningIdeDevice; + if (BeginningIdeChannel >= IdeMaxChannel || EndIdeChannel >= IdeMaxChannel) { + Status = EFI_INVALID_PARAMETER; + goto ErrorExit; + } + if (BeginningIdeDevice >= IdeMaxDevice|| EndIdeDevice >= IdeMaxDevice) { + Status = EFI_INVALID_PARAMETER; + goto ErrorExit; + } } // @@ -1030,8 +1038,9 @@ DeRegisterIdeDevice ( // Release allocated resources // Index = IdeBlkIoDevice->Channel * 2 + IdeBlkIoDevice->Device; - IdeBlkIoDevice->IdeBusDriverPrivateData->HaveScannedDevice[Index] = FALSE; - + if (Index < MAX_IDE_DEVICE) { + IdeBlkIoDevice->IdeBusDriverPrivateData->HaveScannedDevice[Index] = FALSE; + } ReleaseIdeResources (IdeBlkIoDevice); return EFI_SUCCESS; -- cgit v1.2.3