summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Core/Dxe/FwVol
diff options
context:
space:
mode:
authorlzeng14 <lzeng14@6f19259b-4bc3-4df7-8a09-765794883524>2012-05-29 05:22:01 +0000
committerlzeng14 <lzeng14@6f19259b-4bc3-4df7-8a09-765794883524>2012-05-29 05:22:01 +0000
commit0c3a1db40f982d243b8e2c67ee4e8109a0737d34 (patch)
treeef0b32272e5084335145413bc693f7715c7945e8 /MdeModulePkg/Core/Dxe/FwVol
parentb504f51998e839691e0d8c68f3f3093907575594 (diff)
downloadedk2-0c3a1db40f982d243b8e2c67ee4e8109a0737d34.zip
edk2-0c3a1db40f982d243b8e2c67ee4e8109a0737d34.tar.gz
edk2-0c3a1db40f982d243b8e2c67ee4e8109a0737d34.tar.bz2
Update DxeCore and FwVolDxe drivers to inherit authentication status for the FV image, if the image came from an FV image file and section in another firmware volume.
Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Chao Zhang <chao.b.zhang@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13368 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Core/Dxe/FwVol')
-rw-r--r--MdeModulePkg/Core/Dxe/FwVol/FwVol.c11
-rw-r--r--MdeModulePkg/Core/Dxe/FwVol/FwVolDriver.h1
-rw-r--r--MdeModulePkg/Core/Dxe/FwVol/FwVolRead.c9
3 files changed, 19 insertions, 2 deletions
diff --git a/MdeModulePkg/Core/Dxe/FwVol/FwVol.c b/MdeModulePkg/Core/Dxe/FwVol/FwVol.c
index 1cee6a9..9355e52 100644
--- a/MdeModulePkg/Core/Dxe/FwVol/FwVol.c
+++ b/MdeModulePkg/Core/Dxe/FwVol/FwVol.c
@@ -45,6 +45,8 @@ FV_DEVICE mFvDevice = {
NULL,
NULL,
{ NULL, NULL },
+ 0,
+ FALSE,
0
};
@@ -638,8 +640,15 @@ NotifyFwVolBlock (
FvDevice->Fvb = Fvb;
FvDevice->Handle = Handle;
FvDevice->FwVolHeader = FwVolHeader;
- FvDevice->Fv.ParentHandle = Fvb->ParentHandle;
FvDevice->IsFfs3Fv = CompareGuid (&FwVolHeader->FileSystemGuid, &gEfiFirmwareFileSystem3Guid);
+ FvDevice->Fv.ParentHandle = Fvb->ParentHandle;
+
+ if (Fvb->ParentHandle != NULL) {
+ //
+ // Inherit the authentication status from FVB.
+ //
+ FvDevice->AuthenticationStatus = GetFvbAuthenticationStatus (Fvb);
+ }
if (!EFI_ERROR (FvCheck (FvDevice))) {
//
diff --git a/MdeModulePkg/Core/Dxe/FwVol/FwVolDriver.h b/MdeModulePkg/Core/Dxe/FwVol/FwVolDriver.h
index 31d1512..4986792 100644
--- a/MdeModulePkg/Core/Dxe/FwVol/FwVolDriver.h
+++ b/MdeModulePkg/Core/Dxe/FwVol/FwVolDriver.h
@@ -44,6 +44,7 @@ typedef struct {
UINT8 ErasePolarity;
BOOLEAN IsFfs3Fv;
+ UINT32 AuthenticationStatus;
} FV_DEVICE;
#define FV_DEVICE_FROM_THIS(a) CR(a, FV_DEVICE, Fv, FV2_DEVICE_SIGNATURE)
diff --git a/MdeModulePkg/Core/Dxe/FwVol/FwVolRead.c b/MdeModulePkg/Core/Dxe/FwVol/FwVolRead.c
index fc1a2e5..b5a0d87 100644
--- a/MdeModulePkg/Core/Dxe/FwVol/FwVolRead.c
+++ b/MdeModulePkg/Core/Dxe/FwVol/FwVolRead.c
@@ -1,7 +1,7 @@
/** @file
Implements functions to read firmware file
-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
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
@@ -484,6 +484,13 @@ FvReadFileSection (
FvDevice->IsFfs3Fv
);
+ if (!EFI_ERROR (Status)) {
+ //
+ // Inherit the authentication status.
+ //
+ *AuthenticationStatus |= FvDevice->AuthenticationStatus;
+ }
+
//
// Close of stream defered to close of FfsHeader list to allow SEP to cache data
//