]> git.proxmox.com Git - mirror_edk2.git/commitdiff
1. When get value from AltCfg data, check the varstore type first.
authorydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 13 Jun 2011 05:20:23 +0000 (05:20 +0000)
committerydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 13 Jun 2011 05:20:23 +0000 (05:20 +0000)
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

MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c
MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c
MdeModulePkg/Universal/SetupBrowserDxe/Setup.c

index d13a89797a98956f10d2e3e014a3faa7479c9bc3..121a80f643b89c3d49f09782110078885861f117 100644 (file)
@@ -457,6 +457,7 @@ InitializeRequestElement (
 \r
   if (!Find) {\r
     ConfigInfo = AllocateZeroPool(sizeof (FORM_BROWSER_CONFIG_REQUEST));\r
+    ASSERT (ConfigInfo != NULL);\r
     ConfigInfo->Signature     = FORM_BROWSER_CONFIG_REQUEST_SIGNATURE;\r
     ConfigInfo->ConfigRequest = AllocateCopyPool (StrSize (Storage->ConfigHdr), Storage->ConfigHdr);\r
     ConfigInfo->SpareStrLen   = 0;\r
index 0372f2755bda5f8079f9d9be86ef8471e659b488..63996b62a634e469f91202be0dc77ffb5f1a4008 100644 (file)
@@ -1023,7 +1023,9 @@ FindNextMenu (
   }\r
 \r
   Selection->Statement = NULL;\r
-  CurrentMenu->QuestionId = 0;  \r
+  if (CurrentMenu != NULL) {\r
+    CurrentMenu->QuestionId = 0;\r
+  }\r
 \r
   Selection->Action = UI_ACTION_EXIT;\r
   return TRUE;\r
index dbf6a79b8cffd62312a0384edfddb948fb0f5bfc..fa721f6d1622ef9d91c517650291e02421e32175 100644 (file)
@@ -2133,6 +2133,7 @@ GetDefaultValueFromAltCfg (
   ConfigRequest = NULL;\r
   Result        = NULL;\r
   ConfigResp    = NULL;\r
+  Value         = NULL;\r
   Storage       = Question->Storage;\r
 \r
   if ((Storage == NULL) || (Storage->Type == EFI_HII_VARSTORE_EFI_VARIABLE)) {\r
@@ -2213,12 +2214,18 @@ GetDefaultValueFromAltCfg (
   //\r
   // Skip <ConfigRequest>\r
   //\r
-  Value = StrStr (ConfigResp, L"&VALUE");\r
   if (IsBufferStorage) {\r
+    Value = StrStr (ConfigResp, L"&VALUE");\r
+    ASSERT (Value != NULL);\r
     //\r
     // Skip "&VALUE"\r
     //\r
     Value = Value + 6;\r
+  } else {\r
+    Value = StrStr (ConfigResp, Question->VariableName);\r
+    ASSERT (Value != NULL);\r
+\r
+    Value = Value + StrLen (Question->VariableName);\r
   }\r
   if (*Value != '=') {\r
     Status = EFI_NOT_FOUND;\r