]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c
MdeModulePkg: Convert HiiDatabaseDxe ConfigRouting ASSERT to return an error
[mirror_edk2.git] / MdeModulePkg / Universal / HiiDatabaseDxe / ConfigRouting.c
index 1081e759211657c7ba408b6995ca0a2938540eda..55ac08cedb29859a7b55858f8bf18e7b2f0c388e 100644 (file)
@@ -1599,6 +1599,7 @@ ParseIfrData (
   UINT16                   VarWidth;\r
   UINT16                   VarDefaultId;\r
   BOOLEAN                  FirstOneOfOption;\r
+  BOOLEAN                  FirstOrderedList;\r
   LIST_ENTRY               *LinkData;\r
   LIST_ENTRY               *LinkDefault;\r
   EFI_IFR_VARSTORE_NAME_VALUE *IfrNameValueVarStore;\r
@@ -1610,6 +1611,7 @@ ParseIfrData (
   DefaultDataPtr   = NULL;\r
   FirstOneOfOption = FALSE;\r
   VarStoreId       = 0;\r
+  FirstOrderedList = FALSE;\r
   ZeroMem (&DefaultData, sizeof (IFR_DEFAULT_DATA));\r
 \r
   //\r
@@ -1856,9 +1858,9 @@ ParseIfrData (
       //\r
       // offset by question header\r
       // width by EFI_IFR_ORDERED_LIST MaxContainers * OneofOption Type\r
-      // no default value and default id, how to define its default value?\r
       //\r
 \r
+      FirstOrderedList = TRUE;\r
       //\r
       // OrderedList question is not in IFR Form. This IFR form is not valid. \r
       //\r
@@ -2102,6 +2104,10 @@ ParseIfrData (
 \r
       IfrOneOfOption = (EFI_IFR_ONE_OF_OPTION *) IfrOpHdr;\r
       if (BlockData->OpCode == EFI_IFR_ORDERED_LIST_OP) {\r
+\r
+        if (!FirstOrderedList){\r
+          break;\r
+        }\r
         //\r
         // Get ordered list option data type.\r
         //\r
@@ -2158,10 +2164,9 @@ ParseIfrData (
         // Add Block Data into VarStorageData BlockEntry\r
         //\r
         InsertBlockData (&VarStorageData->BlockEntry, &BlockData);\r
-        //\r
-        // No default data for OrderedList.\r
-        //\r
-        BlockData = NULL;\r
+\r
+        FirstOrderedList = FALSE;\r
+\r
         break;\r
       }\r
 \r
@@ -2222,12 +2227,6 @@ ParseIfrData (
         break;\r
       }\r
 \r
-      if (BlockData->OpCode == EFI_IFR_ORDERED_LIST_OP) {\r
-        //\r
-        // OrderedList Opcode is no default value.\r
-        //\r
-        break;\r
-      }\r
       //\r
       // Get the DefaultId\r
       //\r
@@ -3874,7 +3873,9 @@ HiiConfigRoutingExtractConfig (
                       &gEfiHiiConfigAccessProtocolGuid,\r
                       (VOID **) &ConfigAccess\r
                       );\r
-      ASSERT_EFI_ERROR (Status);\r
+      if (EFI_ERROR (Status)) {\r
+        goto Done;\r
+      }\r
 \r
       Status = ConfigAccess->ExtractConfig (\r
                                ConfigAccess,\r