summaryrefslogtreecommitdiff
path: root/MdeModulePkg
diff options
context:
space:
mode:
authorydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>2011-06-13 05:20:23 +0000
committerydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>2011-06-13 05:20:23 +0000
commit0194d26cb8427513c2cb78398e3d529bb0a44bf4 (patch)
tree78aa2bbe0f695373c5d8322ecd678a66e0c5ff5c /MdeModulePkg
parent9de33db48b8e24aa8fa446a6e6983b4e40126fe5 (diff)
downloadedk2-0194d26cb8427513c2cb78398e3d529bb0a44bf4.zip
edk2-0194d26cb8427513c2cb78398e3d529bb0a44bf4.tar.gz
edk2-0194d26cb8427513c2cb78398e3d529bb0a44bf4.tar.bz2
1. When get value from AltCfg data, check the varstore type first.
2. Check the pointer's validation before using it. Signed-off-by:ydong10 Reviewed-by:lgao4 git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11816 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg')
-rw-r--r--MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c1
-rw-r--r--MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c4
-rw-r--r--MdeModulePkg/Universal/SetupBrowserDxe/Setup.c9
3 files changed, 12 insertions, 2 deletions
diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c b/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c
index d13a897..121a80f 100644
--- a/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c
+++ b/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c
@@ -457,6 +457,7 @@ InitializeRequestElement (
if (!Find) {
ConfigInfo = AllocateZeroPool(sizeof (FORM_BROWSER_CONFIG_REQUEST));
+ ASSERT (ConfigInfo != NULL);
ConfigInfo->Signature = FORM_BROWSER_CONFIG_REQUEST_SIGNATURE;
ConfigInfo->ConfigRequest = AllocateCopyPool (StrSize (Storage->ConfigHdr), Storage->ConfigHdr);
ConfigInfo->SpareStrLen = 0;
diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c b/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c
index 0372f27..63996b6 100644
--- a/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c
+++ b/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c
@@ -1023,7 +1023,9 @@ FindNextMenu (
}
Selection->Statement = NULL;
- CurrentMenu->QuestionId = 0;
+ if (CurrentMenu != NULL) {
+ CurrentMenu->QuestionId = 0;
+ }
Selection->Action = UI_ACTION_EXIT;
return TRUE;
diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
index dbf6a79..fa721f6 100644
--- a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
+++ b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
@@ -2133,6 +2133,7 @@ GetDefaultValueFromAltCfg (
ConfigRequest = NULL;
Result = NULL;
ConfigResp = NULL;
+ Value = NULL;
Storage = Question->Storage;
if ((Storage == NULL) || (Storage->Type == EFI_HII_VARSTORE_EFI_VARIABLE)) {
@@ -2213,12 +2214,18 @@ GetDefaultValueFromAltCfg (
//
// Skip <ConfigRequest>
//
- Value = StrStr (ConfigResp, L"&VALUE");
if (IsBufferStorage) {
+ Value = StrStr (ConfigResp, L"&VALUE");
+ ASSERT (Value != NULL);
//
// Skip "&VALUE"
//
Value = Value + 6;
+ } else {
+ Value = StrStr (ConfigResp, Question->VariableName);
+ ASSERT (Value != NULL);
+
+ Value = Value + StrLen (Question->VariableName);
}
if (*Value != '=') {
Status = EFI_NOT_FOUND;