diff --git a/IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLib.c b/IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLib.c index 14d549d4d6..a489288761 100644 --- a/IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLib.c +++ b/IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLib.c @@ -796,6 +796,7 @@ Returns: RETURN_SUCCESS - The size of destination buffer and the size of scratch buffer are successull retrieved. RETURN_INVALID_PARAMETER - The source data is corrupted + The GUID in InputSection does not match this instance guid. --*/ { @@ -804,6 +805,12 @@ Returns: if (InputSection == NULL) { return RETURN_INVALID_PARAMETER; } + + if (!CompareGuid ( + &gTianoCustomDecompressGuid, + &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid))) { + return RETURN_INVALID_PARAMETER; + } // // Get guid attribute of guid section. // @@ -846,7 +853,8 @@ Arguments: Returns: RETURN_SUCCESS - Decompression is successfull - RETURN_INVALID_PARAMETER - The source data is corrupted + RETURN_INVALID_PARAMETER - The source data is corrupted, or + The GUID in InputSection does not match this instance guid. --*/ { @@ -854,7 +862,14 @@ Returns: if (InputSection == NULL) { return RETURN_INVALID_PARAMETER; - } + } + + if (!CompareGuid ( + &gTianoCustomDecompressGuid, + &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid))) { + return RETURN_INVALID_PARAMETER; + } + // // Set Authentication to Zero. // diff --git a/IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLib.inf b/IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLib.inf index 18e1f49a27..746d42c2ae 100644 --- a/IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLib.inf +++ b/IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLib.inf @@ -42,6 +42,7 @@ [LibraryClasses] DebugLib + BaseMemoryLib ExtractGuidedSectionLib [Guids] diff --git a/IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLibInternals.h b/IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLibInternals.h index 29995387b4..c83d79ef0f 100644 --- a/IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLibInternals.h +++ b/IntelFrameworkModulePkg/Library/BaseUefiTianoCustomDecompressLib/BaseUefiTianoCustomDecompressLibInternals.h @@ -21,6 +21,7 @@ #include #include +#include #include // diff --git a/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.c b/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.c index 6deb8dc6d2..8e2cc0201f 100644 --- a/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.c +++ b/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.c @@ -27,6 +27,7 @@ Abstract: #include #include #include +#include #include typedef struct { @@ -57,10 +58,16 @@ Arguments: Returns: EFI_SUCCESS - The size of destination buffer and the size of scratch buffer are successull retrieved. - EFI_INVALID_PARAMETER - The source data is corrupted + EFI_INVALID_PARAMETER - The source data is corrupted, or + The GUID in InputSection does not match this instance guid. --*/ { + if (!CompareGuid ( + &gEfiCrc32GuidedSectionExtractionProtocolGuid, + &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid))) { + return EFI_INVALID_PARAMETER; + } // // Retrieve the size and attribute of the input section data. // @@ -97,8 +104,9 @@ Arguments: Returns: - EFI_SUCCESS - Decompression is successfull - EFI_INVALID_PARAMETER - The source data is corrupted + RETURN_SUCCESS - Decompression is successfull + RETURN_INVALID_PARAMETER - The source data is corrupted, or + The GUID in InputSection does not match this instance guid. --*/ { @@ -108,6 +116,12 @@ Returns: UINT32 OutputBufferSize; VOID *DummyInterface; + if (!CompareGuid ( + &gEfiCrc32GuidedSectionExtractionProtocolGuid, + &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid))) { + return EFI_INVALID_PARAMETER; + } + Crc32Checksum = 0; // // Points to the Crc32 section header diff --git a/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf b/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf index d5f136de4a..b5cbdcecf1 100644 --- a/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf +++ b/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf @@ -41,6 +41,7 @@ ExtractGuidedSectionLib UefiBootServicesTableLib DebugLib + BaseMemoryLib [Protocols] gEfiCrc32GuidedSectionExtractionProtocolGuid diff --git a/MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.c b/MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.c index 350aec59b7..164691389b 100644 --- a/MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.c +++ b/MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.c @@ -141,7 +141,7 @@ ExtractGuidedSectionRegisterHandlers ( Get information from the guided section. This function first gets the guid value from guided section header, then match this guid in the registered extract Handler list to its corresponding getinfo Handler. - If not found, RETURN_UNSUPPORTED will be return. + If not found, RETURN_INVALID_PARAMETER will be return. If found, it will call the getinfo Handler to get the required size and attribute. It will ASSERT () if the pointer to OutputBufferSize is NULL. @@ -154,8 +154,8 @@ ExtractGuidedSectionRegisterHandlers ( @param[out] SectionAttribute The attribute of the input guided section. @retval RETURN_SUCCESS Get the required information successfully. - @retval RETURN_UNSUPPORTED Guided section data is not supported. - @retval RETURN_INVALID_PARAMETER The input data can't be parsed correctly. + @retval RETURN_INVALID_PARAMETER The input data can't be parsed correctly. + The GUID in InputSection does not match any registered guid list. **/ RETURN_STATUS @@ -190,7 +190,7 @@ ExtractGuidedSectionGetInfo ( // Not found, the input guided section is not supported. // if (Index == mNumberOfExtractHandler) { - return RETURN_UNSUPPORTED; + return RETURN_INVALID_PARAMETER; } // @@ -208,7 +208,7 @@ ExtractGuidedSectionGetInfo ( Extract data from the guided section. This function first gets the guid value from guided section header, then match this guid in the registered extract Handler list to its corresponding extract Handler. - If not found, RETURN_UNSUPPORTED will be return. + If not found, RETURN_INVALID_PARAMETER will be return. If found, it will call this extract Handler to get output data and AuthenticationStatus. It will ASSERT () if the pointer to OutputBuffer is NULL. @@ -225,8 +225,8 @@ ExtractGuidedSectionGetInfo ( authentication status of the output buffer. @retval RETURN_SUCCESS Get the output data, size and AuthenticationStatus successfully. - @retval RETURN_UNSUPPORTED Guided section data is not supported to be decoded. - @retval RETURN_INVALID_PARAMETER The input data can't be parsed correctly. + @retval RETURN_INVALID_PARAMETER The input data can't be parsed correctly. + The GUID in InputSection does not match any registered guid. **/ RETURN_STATUS @@ -260,7 +260,7 @@ ExtractGuidedSectionDecode ( // Not found, the input guided section is not supported. // if (Index == mNumberOfExtractHandler) { - return RETURN_UNSUPPORTED; + return RETURN_INVALID_PARAMETER; } // diff --git a/MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.c b/MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.c index 51cf29d1f4..bbe6b50872 100644 --- a/MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.c +++ b/MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.c @@ -188,7 +188,7 @@ ExtractGuidedSectionRegisterHandlers ( Get information from the guided section. This function first gets the guid value from guided section header, then match this guid in the registered extract Handler list to its corresponding getinfo Handler. - If not found, RETURN_UNSUPPORTED will be return. + If not found, RETURN_INVALID_PARAMETER will be return. If found, it will call the getinfo Handler to get the required size and attribute. It will ASSERT () if the pointer to OutputBufferSize is NULL. @@ -201,8 +201,8 @@ ExtractGuidedSectionRegisterHandlers ( @param[out] SectionAttribute The attribute of the input guided section. @retval RETURN_SUCCESS Get the required information successfully. - @retval RETURN_UNSUPPORTED Guided section data is not supported. - @retval RETURN_INVALID_PARAMETER The input data can't be parsed correctly. + @retval RETURN_INVALID_PARAMETER The input data can't be parsed correctly. + The GUID in InputSection does not match any registered guid list. **/ RETURN_STATUS @@ -250,7 +250,7 @@ ExtractGuidedSectionGetInfo ( // Not found, the input guided section is not supported. // if (Index == HandlerInfo->NumberOfExtractHandler) { - return RETURN_UNSUPPORTED; + return RETURN_INVALID_PARAMETER; } // @@ -268,7 +268,7 @@ ExtractGuidedSectionGetInfo ( Extract data from the guided section. This function first gets the guid value from guided section header, then match this guid in the registered extract Handler list to its corresponding extract Handler. - If not found, RETURN_UNSUPPORTED will be return. + If not found, RETURN_INVALID_PARAMETER will be return. If found, it will call this extract Handler to get output data and AuthenticationStatus. It will ASSERT () if the pointer to OutputBuffer is NULL. @@ -285,8 +285,8 @@ ExtractGuidedSectionGetInfo ( authentication status of the output buffer. @retval RETURN_SUCCESS Get the output data, size and AuthenticationStatus successfully. - @retval RETURN_UNSUPPORTED Guided section data is not supported to be decoded. - @retval RETURN_INVALID_PARAMETER The input data can't be parsed correctly. + @retval RETURN_INVALID_PARAMETER The input data can't be parsed correctly. + The GUID in InputSection does not match any registered guid list. **/ RETURN_STATUS @@ -327,7 +327,7 @@ ExtractGuidedSectionDecode ( // Not found, the input guided section is not supported. // if (Index == HandlerInfo->NumberOfExtractHandler) { - return RETURN_UNSUPPORTED; + return RETURN_INVALID_PARAMETER; } //