]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellLevel1CommandsLib/If.c
pointer verification (not NULL) and buffer overrun fixes.
[mirror_edk2.git] / ShellPkg / Library / UefiShellLevel1CommandsLib / If.c
index 59069e568f42d09565d005f73c85c046977bc595..a3c4482bb3bfc3284347a7deba775f65e1ee3f0c 100644 (file)
@@ -844,7 +844,17 @@ ShellCommandRunIf (
   // Make sure that an End exists.\r
   //\r
   if (!MoveToTag(GetNextNode, L"endif", L"if", NULL, ShellCommandGetCurrentScriptFile(), TRUE, TRUE, FALSE)) {\r
   // Make sure that an End exists.\r
   //\r
   if (!MoveToTag(GetNextNode, L"endif", L"if", NULL, ShellCommandGetCurrentScriptFile(), TRUE, TRUE, FALSE)) {\r
-    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_NO_MATCHING), gShellLevel1HiiHandle, L"EnfIf", L"If", ShellCommandGetCurrentScriptFile()->CurrentCommand->Line);\r
+    ShellPrintHiiEx(\r
+      -1, \r
+      -1, \r
+      NULL, \r
+      STRING_TOKEN (STR_SYNTAX_NO_MATCHING), \r
+      gShellLevel1HiiHandle, \r
+      L"EnfIf", \r
+      L"If", \r
+      ShellCommandGetCurrentScriptFile()!=NULL\r
+        &&ShellCommandGetCurrentScriptFile()->CurrentCommand!=NULL\r
+          ?ShellCommandGetCurrentScriptFile()->CurrentCommand->Line:0);\r
     return (SHELL_DEVICE_ERROR);\r
   }\r
 \r
     return (SHELL_DEVICE_ERROR);\r
   }\r
 \r
@@ -983,16 +993,46 @@ ShellCommandRunElse (
 \r
 \r
   if (!MoveToTag(GetPreviousNode, L"if", L"endif", NULL, ShellCommandGetCurrentScriptFile(), FALSE, TRUE, FALSE)) {\r
 \r
 \r
   if (!MoveToTag(GetPreviousNode, L"if", L"endif", NULL, ShellCommandGetCurrentScriptFile(), FALSE, TRUE, FALSE)) {\r
-    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_NO_MATCHING), gShellLevel1HiiHandle, L"If", L"Else", ShellCommandGetCurrentScriptFile()->CurrentCommand->Line);\r
+    ShellPrintHiiEx(\r
+      -1, \r
+      -1, \r
+      NULL, \r
+      STRING_TOKEN (STR_SYNTAX_NO_MATCHING), \r
+      gShellLevel1HiiHandle, \r
+      L"If", \r
+      L"Else", \r
+      ShellCommandGetCurrentScriptFile()!=NULL\r
+        &&ShellCommandGetCurrentScriptFile()->CurrentCommand!=NULL\r
+          ?ShellCommandGetCurrentScriptFile()->CurrentCommand->Line:0);\r
     return (SHELL_DEVICE_ERROR);\r
   }\r
   if (!MoveToTag(GetPreviousNode, L"if", L"else", NULL, ShellCommandGetCurrentScriptFile(), FALSE, TRUE, FALSE)) {\r
     return (SHELL_DEVICE_ERROR);\r
   }\r
   if (!MoveToTag(GetPreviousNode, L"if", L"else", NULL, ShellCommandGetCurrentScriptFile(), FALSE, TRUE, FALSE)) {\r
-    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_NO_MATCHING), gShellLevel1HiiHandle, L"If", L"Else", ShellCommandGetCurrentScriptFile()->CurrentCommand->Line);\r
+    ShellPrintHiiEx(\r
+      -1, \r
+      -1, \r
+      NULL, \r
+      STRING_TOKEN (STR_SYNTAX_NO_MATCHING), \r
+      gShellLevel1HiiHandle, \r
+      L"If", \r
+      L"Else", \r
+      ShellCommandGetCurrentScriptFile()!=NULL\r
+        &&ShellCommandGetCurrentScriptFile()->CurrentCommand!=NULL\r
+          ?ShellCommandGetCurrentScriptFile()->CurrentCommand->Line:0);\r
     return (SHELL_DEVICE_ERROR);\r
   }\r
 \r
   if (!MoveToTag(GetNextNode, L"endif", L"if", NULL, ShellCommandGetCurrentScriptFile(), FALSE, FALSE, FALSE)) {\r
     return (SHELL_DEVICE_ERROR);\r
   }\r
 \r
   if (!MoveToTag(GetNextNode, L"endif", L"if", NULL, ShellCommandGetCurrentScriptFile(), FALSE, FALSE, FALSE)) {\r
-    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_NO_MATCHING), gShellLevel1HiiHandle, L"EndIf", "Else", ShellCommandGetCurrentScriptFile()->CurrentCommand->Line);\r
+    ShellPrintHiiEx(\r
+      -1, \r
+      -1, \r
+      NULL, \r
+      STRING_TOKEN (STR_SYNTAX_NO_MATCHING), \r
+      gShellLevel1HiiHandle, \r
+      L"EndIf", \r
+      "Else", \r
+      ShellCommandGetCurrentScriptFile()!=NULL\r
+        &&ShellCommandGetCurrentScriptFile()->CurrentCommand!=NULL\r
+          ?ShellCommandGetCurrentScriptFile()->CurrentCommand->Line:0);\r
     return (SHELL_DEVICE_ERROR);\r
   }\r
 \r
     return (SHELL_DEVICE_ERROR);\r
   }\r
 \r
@@ -1025,7 +1065,17 @@ ShellCommandRunEndIf (
   }\r
 \r
   if (!MoveToTag(GetPreviousNode, L"if", L"endif", NULL, ShellCommandGetCurrentScriptFile(), FALSE, TRUE, FALSE)) {\r
   }\r
 \r
   if (!MoveToTag(GetPreviousNode, L"if", L"endif", NULL, ShellCommandGetCurrentScriptFile(), FALSE, TRUE, FALSE)) {\r
-    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_NO_MATCHING), gShellLevel1HiiHandle, L"If", L"EndIf", ShellCommandGetCurrentScriptFile()->CurrentCommand->Line);\r
+    ShellPrintHiiEx(\r
+      -1, \r
+      -1, \r
+      NULL, \r
+      STRING_TOKEN (STR_SYNTAX_NO_MATCHING), \r
+      gShellLevel1HiiHandle, \r
+      L"If", \r
+      L"EndIf", \r
+      ShellCommandGetCurrentScriptFile()!=NULL\r
+        &&ShellCommandGetCurrentScriptFile()->CurrentCommand!=NULL\r
+          ?ShellCommandGetCurrentScriptFile()->CurrentCommand->Line:0);\r
     return (SHELL_DEVICE_ERROR);\r
   }\r
 \r
     return (SHELL_DEVICE_ERROR);\r
   }\r
 \r