// The structure to save the deferred 3rd party image information.\r
//\r
typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL *ImageDevicePath;\r
- BOOLEAN BootOption;\r
- BOOLEAN Loaded;\r
+ EFI_DEVICE_PATH_PROTOCOL *ImageDevicePath;\r
+ BOOLEAN BootOption;\r
+ BOOLEAN Loaded;\r
} DEFERRED_3RD_PARTY_IMAGE_INFO;\r
\r
//\r
// The table to save the deferred 3rd party image item.\r
//\r
typedef struct {\r
- UINTN Count; ///< deferred 3rd party image count\r
- DEFERRED_3RD_PARTY_IMAGE_INFO *ImageInfo; ///< deferred 3rd party image item\r
+ UINTN Count; ///< deferred 3rd party image count\r
+ DEFERRED_3RD_PARTY_IMAGE_INFO *ImageInfo; ///< deferred 3rd party image item\r
} DEFERRED_3RD_PARTY_IMAGE_TABLE;\r
\r
-BOOLEAN mImageLoadedAfterEndOfDxe = FALSE;\r
-BOOLEAN mEndOfDxe = FALSE;\r
-DEFERRED_3RD_PARTY_IMAGE_TABLE mDeferred3rdPartyImage = {\r
+BOOLEAN mImageLoadedAfterEndOfDxe = FALSE;\r
+BOOLEAN mEndOfDxe = FALSE;\r
+DEFERRED_3RD_PARTY_IMAGE_TABLE mDeferred3rdPartyImage = {\r
0, // Deferred image count\r
NULL // The deferred image info\r
};\r
\r
-EFI_DEFERRED_IMAGE_LOAD_PROTOCOL mDeferredImageLoad = {\r
+EFI_DEFERRED_IMAGE_LOAD_PROTOCOL mDeferredImageLoad = {\r
GetDefferedImageInfo\r
};\r
\r
**/\r
BOOLEAN\r
FileFromFv (\r
- IN CONST EFI_DEVICE_PATH_PROTOCOL *File\r
+ IN CONST EFI_DEVICE_PATH_PROTOCOL *File\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_HANDLE DeviceHandle;\r
- EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;\r
+ EFI_STATUS Status;\r
+ EFI_HANDLE DeviceHandle;\r
+ EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;\r
\r
//\r
// First check to see if File is from a Firmware Volume\r
//\r
DeviceHandle = NULL;\r
- TempDevicePath = (EFI_DEVICE_PATH_PROTOCOL *) File;\r
- Status = gBS->LocateDevicePath (\r
- &gEfiFirmwareVolume2ProtocolGuid,\r
- &TempDevicePath,\r
- &DeviceHandle\r
- );\r
+ TempDevicePath = (EFI_DEVICE_PATH_PROTOCOL *)File;\r
+ Status = gBS->LocateDevicePath (\r
+ &gEfiFirmwareVolume2ProtocolGuid,\r
+ &TempDevicePath,\r
+ &DeviceHandle\r
+ );\r
if (!EFI_ERROR (Status)) {\r
Status = gBS->OpenProtocol (\r
DeviceHandle,\r
**/\r
DEFERRED_3RD_PARTY_IMAGE_INFO *\r
LookupImage (\r
- IN CONST EFI_DEVICE_PATH_PROTOCOL *ImageDevicePath,\r
- IN BOOLEAN BootOption\r
+ IN CONST EFI_DEVICE_PATH_PROTOCOL *ImageDevicePath,\r
+ IN BOOLEAN BootOption\r
)\r
{\r
- UINTN Index;\r
- UINTN DevicePathSize;\r
+ UINTN Index;\r
+ UINTN DevicePathSize;\r
\r
DevicePathSize = GetDevicePathSize (ImageDevicePath);\r
\r
**/\r
VOID\r
QueueImage (\r
- IN CONST EFI_DEVICE_PATH_PROTOCOL *ImageDevicePath,\r
- IN BOOLEAN BootOption\r
+ IN CONST EFI_DEVICE_PATH_PROTOCOL *ImageDevicePath,\r
+ IN BOOLEAN BootOption\r
)\r
{\r
- DEFERRED_3RD_PARTY_IMAGE_INFO *ImageInfo;\r
+ DEFERRED_3RD_PARTY_IMAGE_INFO *ImageInfo;\r
\r
//\r
// Expand memory for the new deferred image.\r
mDeferred3rdPartyImage.Count * sizeof (DEFERRED_3RD_PARTY_IMAGE_INFO),\r
(mDeferred3rdPartyImage.Count + 1) * sizeof (DEFERRED_3RD_PARTY_IMAGE_INFO),\r
mDeferred3rdPartyImage.ImageInfo\r
- );\r
+ );\r
if (ImageInfo == NULL) {\r
return;\r
}\r
+\r
mDeferred3rdPartyImage.ImageInfo = ImageInfo;\r
\r
//\r
// Save the deferred image information.\r
//\r
- ImageInfo = &mDeferred3rdPartyImage.ImageInfo[mDeferred3rdPartyImage.Count];\r
+ ImageInfo = &mDeferred3rdPartyImage.ImageInfo[mDeferred3rdPartyImage.Count];\r
ImageInfo->ImageDevicePath = DuplicateDevicePath (ImageDevicePath);\r
if (ImageInfo->ImageDevicePath == NULL) {\r
return;\r
}\r
+\r
ImageInfo->BootOption = BootOption;\r
ImageInfo->Loaded = FALSE;\r
mDeferred3rdPartyImage.Count++;\r
}\r
\r
-\r
/**\r
Returns information about a deferred image.\r
\r
GetDefferedImageInfo (\r
IN EFI_DEFERRED_IMAGE_LOAD_PROTOCOL *This,\r
IN UINTN ImageIndex,\r
- OUT EFI_DEVICE_PATH_PROTOCOL **ImageDevicePath,\r
- OUT VOID **Image,\r
- OUT UINTN *ImageSize,\r
- OUT BOOLEAN *BootOption\r
+ OUT EFI_DEVICE_PATH_PROTOCOL **ImageDevicePath,\r
+ OUT VOID **Image,\r
+ OUT UINTN *ImageSize,\r
+ OUT BOOLEAN *BootOption\r
)\r
{\r
- UINTN Index;\r
- UINTN NewCount;\r
+ UINTN Index;\r
+ UINTN NewCount;\r
\r
if ((This == NULL) || (ImageSize == NULL) || (Image == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
IN VOID *Context\r
)\r
{\r
- EFI_STATUS Status;\r
- VOID *Interface;\r
+ EFI_STATUS Status;\r
+ VOID *Interface;\r
\r
Status = gBS->LocateProtocol (&gEfiDxeSmmReadyToLockProtocolGuid, NULL, &Interface);\r
if (EFI_ERROR (Status)) {\r
**/\r
EFI_STATUS\r
Defer3rdPartyImageLoad (\r
- IN CONST EFI_DEVICE_PATH_PROTOCOL *File,\r
- IN BOOLEAN BootPolicy\r
+ IN CONST EFI_DEVICE_PATH_PROTOCOL *File,\r
+ IN BOOLEAN BootPolicy\r
)\r
{\r
- DEFERRED_3RD_PARTY_IMAGE_INFO *ImageInfo;\r
+ DEFERRED_3RD_PARTY_IMAGE_INFO *ImageInfo;\r
\r
//\r
// Ignore if File is NULL.\r
ImageInfo = LookupImage (File, BootPolicy);\r
\r
DEBUG_CODE_BEGIN ();\r
- CHAR16 *DevicePathStr;\r
- DevicePathStr = ConvertDevicePathToText (File, FALSE, FALSE);\r
- DEBUG ((\r
- DEBUG_INFO,\r
- "[Security] 3rd party image[%p] %s EndOfDxe: %s.\n", ImageInfo,\r
- mEndOfDxe ? L"can be loaded after": L"is deferred to load before",\r
- DevicePathStr\r
- ));\r
- if (DevicePathStr != NULL) {\r
- FreePool (DevicePathStr);\r
- }\r
+ CHAR16 *DevicePathStr;\r
+\r
+ DevicePathStr = ConvertDevicePathToText (File, FALSE, FALSE);\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "[Security] 3rd party image[%p] %s EndOfDxe: %s.\n",\r
+ ImageInfo,\r
+ mEndOfDxe ? L"can be loaded after" : L"is deferred to load before",\r
+ DevicePathStr\r
+ ));\r
+ if (DevicePathStr != NULL) {\r
+ FreePool (DevicePathStr);\r
+ }\r
+\r
DEBUG_CODE_END ();\r
\r
if (mEndOfDxe) {\r
if (ImageInfo != NULL) {\r
ImageInfo->Loaded = TRUE;\r
}\r
+\r
return EFI_SUCCESS;\r
} else {\r
//\r
if (ImageInfo == NULL) {\r
QueueImage (File, BootPolicy);\r
}\r
+\r
return EFI_ACCESS_DENIED;\r
}\r
}\r
VOID\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_HANDLE Handle;\r
- EFI_EVENT Event;\r
- VOID *Registration;\r
+ EFI_STATUS Status;\r
+ EFI_HANDLE Handle;\r
+ EFI_EVENT Event;\r
+ VOID *Registration;\r
\r
Handle = NULL;\r
Status = gBS->InstallMultipleProtocolInterfaces (\r