diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.c b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.c index 2b175a5904..982db88dbf 100644 --- a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.c +++ b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.c @@ -273,7 +273,7 @@ BootMaintCallback ( // CurrentFakeNVMap = (BMM_FAKE_NV_DATA *) HiiGetBrowserData (&mBootMaintGuid, mBootMaintStorageName, sizeof (BMM_FAKE_NV_DATA)); if (CurrentFakeNVMap == NULL) { - CurrentFakeNVMap = &Private->BmmFakeNvData; + return EFI_NOT_FOUND; } // @@ -590,7 +590,7 @@ BootMaintCallback ( // // Update local settting. // - if ((UINTN) CurrentFakeNVMap != (UINTN) &Private->BmmFakeNvData) { + if (CurrentFakeNVMap != NULL) { CopyMem (&Private->BmmFakeNvData, CurrentFakeNVMap, sizeof (BMM_FAKE_NV_DATA)); FreePool (CurrentFakeNVMap); } diff --git a/MdeModulePkg/Library/UefiHiiLib/HiiLib.c b/MdeModulePkg/Library/UefiHiiLib/HiiLib.c index d36828a115..ea3c22348e 100644 --- a/MdeModulePkg/Library/UefiHiiLib/HiiLib.c +++ b/MdeModulePkg/Library/UefiHiiLib/HiiLib.c @@ -564,6 +564,15 @@ InternalHiiBrowserCallback ( VariableGuid, VariableName ); + + if (!EFI_ERROR (Status)) { + // + // No Resluts Data, only allocate one char for '\0' + // + ResultsData = AllocateZeroPool (sizeof (CHAR16)); + return ResultsData; + } + if (Status != EFI_BUFFER_TOO_SMALL) { return NULL; }