]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Enhance the logic when extract data from storage.
authorydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 10 May 2012 08:00:22 +0000 (08:00 +0000)
committerydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 10 May 2012 08:00:22 +0000 (08:00 +0000)
Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13301 6f19259b-4bc3-4df7-8a09-765794883524

EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/ConfigAccess.c

index 86820ca5dadb6f4094e43ae5a87efc594dc60ab8..c33a3f0b8e24a1754774da387631a2a4d1efe983 100644 (file)
@@ -3,7 +3,7 @@
   by HII Thunk Modules. These Config access Protocols are used to thunk UEFI Config \r
   Access Callback to Framework HII Callback and EFI Variable Set/Get operations.\r
   \r
-Copyright (c) 2008 - 2011, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -74,9 +74,12 @@ GetFirstStorageOfFormSet (
 \r
   StorageList = GetFirstNode (&FormSet->StorageListHead);\r
 \r
-  if (!IsNull (&FormSet->StorageListHead, StorageList)) {\r
+  while (!IsNull (&FormSet->StorageListHead, StorageList)) {\r
     Storage = FORMSET_STORAGE_FROM_LINK (StorageList);\r
-    return Storage;\r
+    if (Storage->Type == EFI_HII_VARSTORE_BUFFER) {\r
+      return Storage;\r
+    }\r
+    StorageList = GetNextNode (&FormSet->StorageListHead, StorageList);\r
   }\r
   \r
   return NULL;\r
@@ -155,6 +158,10 @@ GetStorageFromConfigString (
 \r
   while (!IsNull (&FormSet->StorageListHead, StorageList)) {\r
     Storage = FORMSET_STORAGE_FROM_LINK (StorageList);\r
+    StorageList = GetNextNode (&FormSet->StorageListHead, StorageList);\r
+    if (Storage->Type != EFI_HII_VARSTORE_BUFFER) {\r
+      continue;\r
+    }\r
 \r
     if ((Storage->VarStoreId == FormSet->DefaultVarStoreId) && (FormSet->OriginalDefaultVarStoreName != NULL)) {\r
       Name = FormSet->OriginalDefaultVarStoreName;\r
@@ -165,8 +172,6 @@ GetStorageFromConfigString (
     if (HiiIsConfigHdrMatch (ConfigString, &Storage->Guid, Name)) {\r
       return Storage;\r
     }\r
-\r
-    StorageList = GetNextNode (&FormSet->StorageListHead, StorageList);\r
   }\r
 \r
   return NULL;\r
@@ -474,6 +479,12 @@ ThunkExtractConfig (
       }\r
       BufferStorage = FORMSET_STORAGE_FROM_LINK (StorageList);\r
       StorageList = GetNextNode (&FormSetContext->StorageListHead, StorageList);\r
+      if (BufferStorage->Type != EFI_HII_VARSTORE_BUFFER) {\r
+        //\r
+        // BufferStorage type should be EFI_HII_VARSTORE_BUFFER\r
+        //\r
+        continue;\r
+      }\r
     }\r
   \r
     VarStoreName     = NULL;\r