ShellParametersProtocol - remove parsing from within quoted parameters.
authorjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 7 Apr 2011 17:12:12 +0000 (17:12 +0000)
committerjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 7 Apr 2011 17:12:12 +0000 (17:12 +0000)
Pci - Add missing enumeration in switch statement.
For - Verify parameter before dereferencing.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11511 6f19259b-4bc3-4df7-8a09-765794883524

ShellPkg/Application/Shell/ShellParametersProtocol.c
ShellPkg/Library/UefiShellDebug1CommandsLib/Pci.c
ShellPkg/Library/UefiShellLevel1CommandsLib/For.c

index b90a2c3..5d2792b 100644 (file)
@@ -69,9 +69,7 @@ GetNextParameter(
   if ((*Walker)[0] == L'\"') {\r
     NextDelim = NULL;\r
     for (TempLoc = *Walker + 1 ; TempLoc != NULL && *TempLoc != CHAR_NULL ; TempLoc++) {\r
-      if (*TempLoc == L'^' && *(TempLoc+1) == L'^') {\r
-        TempLoc++;\r
-      } else if (*TempLoc == L'^' && *(TempLoc+1) == L'\"') {\r
+      if (*TempLoc == L'^' && *(TempLoc+1) == L'\"') {\r
         TempLoc++;\r
       } else if (*TempLoc == L'\"') {\r
         NextDelim = TempLoc;\r
@@ -96,10 +94,7 @@ GetNextParameter(
       *Walker = NULL;\r
     }\r
     for (TempLoc = *TempParameter ; TempLoc != NULL && *TempLoc != CHAR_NULL ; TempLoc++) {\r
-      if ((*TempLoc == L'^' && *(TempLoc+1) == L'^')\r
-       || (*TempLoc == L'^' && *(TempLoc+1) == L'|')\r
-       || (*TempLoc == L'^' && *(TempLoc+1) == L'\"')\r
-      ){\r
+      if (*TempLoc == L'^' && *(TempLoc+1) == L'\"') {\r
         CopyMem(TempLoc, TempLoc+1, StrSize(TempLoc) - sizeof(TempLoc[0]));\r
       }\r
     }\r
@@ -123,9 +118,7 @@ GetNextParameter(
     for (NextDelim = *TempParameter ; NextDelim != NULL && *NextDelim != CHAR_NULL ; NextDelim++) {\r
       if (*NextDelim == L'^' && *(NextDelim+1) == L'^') {\r
         CopyMem(NextDelim, NextDelim+1, StrSize(NextDelim) - sizeof(NextDelim[0]));\r
-      }/* else if (*NextDelim == L'^') {\r
-        *NextDelim = L' ';\r
-      }*/\r
+      }\r
     }\r
     while ((*TempParameter)[StrLen(*TempParameter)-1] == L' ') {\r
       (*TempParameter)[StrLen(*TempParameter)-1] = CHAR_NULL;\r
index c6e4a32..65effc7 100644 (file)
@@ -2781,6 +2781,9 @@ PciExplainData (
              );\r
     CapPtr = ConfigSpace->NonCommon.CardBus.CapabilitiesPtr;\r
     break;\r
+  case PciUndefined:\r
+  default:\r
+    break;\r
   }\r
   //\r
   // If Status bit4 is 1, dump or explain capability structure\r
@@ -3405,7 +3408,7 @@ PciExplainCardBusData (
     INDEX_OF (&(CardBus->IoBase0)),\r
     Io32Bit ? L"          32 bit" : L"          16 bit",\r
     CardBus->IoBase0 & (Io32Bit ? 0xfffffffc : 0x0000fffc),\r
-    CardBus->IoLimit0 & (Io32Bit ? 0xffffffff : 0x0000ffff) | 0x00000003\r
+    (CardBus->IoLimit0 & (Io32Bit ? 0xffffffff : 0x0000ffff)) | 0x00000003\r
    );\r
 \r
   Io32Bit = (BOOLEAN) (CardBus->IoBase1 & PCI_BIT_0);\r
@@ -3415,7 +3418,7 @@ PciExplainCardBusData (
     INDEX_OF (&(CardBus->IoBase1)),\r
     Io32Bit ? L"          32 bit" : L"          16 bit",\r
     CardBus->IoBase1 & (Io32Bit ? 0xfffffffc : 0x0000fffc),\r
-    CardBus->IoLimit1 & (Io32Bit ? 0xffffffff : 0x0000ffff) | 0x00000003\r
+    (CardBus->IoLimit1 & (Io32Bit ? 0xffffffff : 0x0000ffff)) | 0x00000003\r
    );\r
 \r
   //\r
@@ -4690,14 +4693,16 @@ PciExplainPciExpress (
   //\r
   Print (L"\n%HStart dumping PCIex extended configuration space (0x100 - 0xFFF).%N\n\n");\r
 \r
-  DumpHex (\r
-    2,\r
-    0x100,\r
-    ExtendRegSize,\r
-    (VOID *) (ExRegBuffer)\r
-   );\r
+  if (ExRegBuffer != NULL) {\r
+    DumpHex (\r
+      2,\r
+      0x100,\r
+      ExtendRegSize,\r
+      (VOID *) (ExRegBuffer)\r
+     );\r
 \r
-  FreePool ((VOID *) ExRegBuffer);\r
+    FreePool ((VOID *) ExRegBuffer);\r
+  }\r
 \r
 Done:\r
   return EFI_SUCCESS;\r
index b8e4805..bc26ed3 100644 (file)
@@ -589,11 +589,16 @@ ShellCommandRunFor (
     ASSERT(ArgSet       == NULL);\r
   }\r
 \r
-  Info = (SHELL_FOR_INFO*)CurrentScriptFile->CurrentCommand->Data;\r
-  if (CurrentScriptFile->CurrentCommand->Reset) {\r
-    Info->CurrentValue  = (CHAR16*)Info->Set;\r
-    FirstPass = TRUE;\r
-    CurrentScriptFile->CurrentCommand->Reset = FALSE;\r
+  if (CurrentScriptFile != NULL && CurrentScriptFile->CurrentCommand != NULL) {\r
+    Info = (SHELL_FOR_INFO*)CurrentScriptFile->CurrentCommand->Data;\r
+    if (CurrentScriptFile->CurrentCommand->Reset) {\r
+      Info->CurrentValue  = (CHAR16*)Info->Set;\r
+      FirstPass = TRUE;\r
+      CurrentScriptFile->CurrentCommand->Reset = FALSE;\r
+    }\r
+  } else {\r
+    ShellStatus = SHELL_UNSUPPORTED;\r
+    Info = NULL;\r
   }\r
   if (ShellStatus == SHELL_SUCCESS) {\r
     ASSERT(Info != NULL);\r