mirror of https://github.com/acidanthera/audk.git
Don't install FV protocol on the corrupt FV image.
Signed-off-by: lgao4 Reviewed-by: rsun3 git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13020 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
28de825561
commit
1f33d18687
|
@ -3,7 +3,7 @@
|
||||||
Layers on top of Firmware Block protocol to produce a file abstraction
|
Layers on top of Firmware Block protocol to produce a file abstraction
|
||||||
of FV based files.
|
of FV based files.
|
||||||
|
|
||||||
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -630,17 +630,24 @@ NotifyFwVolBlock (
|
||||||
FvDevice->FwVolHeader = FwVolHeader;
|
FvDevice->FwVolHeader = FwVolHeader;
|
||||||
FvDevice->Fv.ParentHandle = Fvb->ParentHandle;
|
FvDevice->Fv.ParentHandle = Fvb->ParentHandle;
|
||||||
FvDevice->IsFfs3Fv = CompareGuid (&FwVolHeader->FileSystemGuid, &gEfiFirmwareFileSystem3Guid);
|
FvDevice->IsFfs3Fv = CompareGuid (&FwVolHeader->FileSystemGuid, &gEfiFirmwareFileSystem3Guid);
|
||||||
|
|
||||||
//
|
if (!EFI_ERROR (FvCheck (FvDevice))) {
|
||||||
// Install an New FV protocol on the existing handle
|
//
|
||||||
//
|
// Install an New FV protocol on the existing handle
|
||||||
Status = CoreInstallProtocolInterface (
|
//
|
||||||
&Handle,
|
Status = CoreInstallProtocolInterface (
|
||||||
&gEfiFirmwareVolume2ProtocolGuid,
|
&Handle,
|
||||||
EFI_NATIVE_INTERFACE,
|
&gEfiFirmwareVolume2ProtocolGuid,
|
||||||
&FvDevice->Fv
|
EFI_NATIVE_INTERFACE,
|
||||||
);
|
&FvDevice->Fv
|
||||||
ASSERT_EFI_ERROR (Status);
|
);
|
||||||
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
} else {
|
||||||
|
//
|
||||||
|
// Free FvDevice Buffer for the corrupt FV image.
|
||||||
|
//
|
||||||
|
CoreFreePool (FvDevice);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/** @file
|
/** @file
|
||||||
Implements get/set firmware volume attributes
|
Implements get/set firmware volume attributes
|
||||||
|
|
||||||
Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -41,13 +41,6 @@ FvGetVolumeAttributes (
|
||||||
FvDevice = FV_DEVICE_FROM_THIS (This);
|
FvDevice = FV_DEVICE_FROM_THIS (This);
|
||||||
Fvb = FvDevice->Fvb;
|
Fvb = FvDevice->Fvb;
|
||||||
|
|
||||||
if (FvDevice->CachedFv == NULL) {
|
|
||||||
Status = FvCheck (FvDevice);
|
|
||||||
if (EFI_ERROR (Status)) {
|
|
||||||
return Status;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// First get the Firmware Volume Block Attributes
|
// First get the Firmware Volume Block Attributes
|
||||||
//
|
//
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
Firmware File System protocol. Layers on top of Firmware
|
Firmware File System protocol. Layers on top of Firmware
|
||||||
Block protocol to produce a file abstraction of FV based files.
|
Block protocol to produce a file abstraction of FV based files.
|
||||||
|
|
||||||
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -423,21 +423,4 @@ GetFwVolHeader (
|
||||||
OUT EFI_FIRMWARE_VOLUME_HEADER **FwVolHeader
|
OUT EFI_FIRMWARE_VOLUME_HEADER **FwVolHeader
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
Check if an FV is consistent and allocate cache for it.
|
|
||||||
|
|
||||||
@param FvDevice A pointer to the FvDevice to be checked.
|
|
||||||
|
|
||||||
@retval EFI_OUT_OF_RESOURCES No enough buffer could be allocated.
|
|
||||||
@retval EFI_SUCCESS FV is consistent and cache is allocated.
|
|
||||||
@retval EFI_VOLUME_CORRUPTED File system is corrupted.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
FvCheck (
|
|
||||||
IN OUT FV_DEVICE *FvDevice
|
|
||||||
);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue