]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ShellPkg/Ifconfig6: Address ASSERT because of a missing NULL check
authorhegdenag <nagaraj-p.hegde@hpe.com>
Thu, 12 Jan 2017 03:39:38 +0000 (11:39 +0800)
committerJiaxin Wu <jiaxin.wu@intel.com>
Fri, 13 Jan 2017 01:40:48 +0000 (09:40 +0800)
When we issue 'ifconfig6 -s <interface> auto' system hangs with
an ASSERT in StrLen. in IfConfig6SetInterfaceInfo, for 'auto' case
we added checks to rule out the invalid inputs like 'host', 'gw'
and 'dns'. To parse through this, we do a VarArg = VarArg->Next but
we dont check new VarArg before calling StrCmp. Fix with a check
in this patch.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hegde Nagaraj P <nagaraj-p.hegde@hpe.com>
Reviewed-by: Zhang Lubo <lubo.zhang@intel.com>
Reviewed-by: Wu Jiaxin <jiaxin.wu@intel.com>
Reviewed-by: Sriram Subramanian <sriram-s@hpe.com>
ShellPkg/Library/UefiShellNetwork2CommandsLib/Ifconfig6.c

index d71688ed66a714022edfc6216d62918bafd0387a..6d8df8031b8f30a61120a08e2a08defbf90dcfa4 100644 (file)
@@ -1317,20 +1317,21 @@ IfConfig6SetInterfaceInfo (
 \r
       VarArg= VarArg->Next;\r
 \r
-      if (StrCmp (VarArg->Arg, L"host") == 0) {\r
-        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG6_ERR_INVALID_IP_CONFIG), gShellNetwork2HiiHandle, Status);\r
-        ShellStatus = SHELL_INVALID_PARAMETER;\r
-        goto ON_EXIT;\r
-      } else if (StrCmp (VarArg->Arg, L"gw") == 0) {\r
-        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG6_ERR_INVALID_GW_CONFIG), gShellNetwork2HiiHandle, Status);\r
-        ShellStatus = SHELL_INVALID_PARAMETER;\r
-        goto ON_EXIT;\r
-      } else if (StrCmp (VarArg->Arg, L"dns") == 0) {\r
-        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG6_ERR_INVALID_DNS_CONFIG), gShellNetwork2HiiHandle, Status);\r
-        ShellStatus = SHELL_INVALID_PARAMETER;\r
-        goto ON_EXIT;\r
+      if (VarArg != NULL) {\r
+        if (StrCmp (VarArg->Arg, L"host") == 0) {\r
+          ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG6_ERR_INVALID_IP_CONFIG), gShellNetwork2HiiHandle, Status);\r
+          ShellStatus = SHELL_INVALID_PARAMETER;\r
+          goto ON_EXIT;\r
+        } else if (StrCmp (VarArg->Arg, L"gw") == 0) {\r
+          ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG6_ERR_INVALID_GW_CONFIG), gShellNetwork2HiiHandle, Status);\r
+          ShellStatus = SHELL_INVALID_PARAMETER;\r
+          goto ON_EXIT;\r
+        } else if (StrCmp (VarArg->Arg, L"dns") == 0) {\r
+          ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG6_ERR_INVALID_DNS_CONFIG), gShellNetwork2HiiHandle, Status);\r
+          ShellStatus = SHELL_INVALID_PARAMETER;\r
+          goto ON_EXIT;\r
+        }\r
       }\r
-\r
     } else if (StrCmp (VarArg->Arg, L"man") == 0) {\r
       //\r
       // Set manual config policy.\r