mirror of https://github.com/acidanthera/audk.git
ShellPkg/Ifconfig6: Address ASSERT because of a missing NULL check
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>
This commit is contained in:
parent
e9f0be021b
commit
521981ee76
|
@ -1317,20 +1317,21 @@ IfConfig6SetInterfaceInfo (
|
|||
|
||||
VarArg= VarArg->Next;
|
||||
|
||||
if (StrCmp (VarArg->Arg, L"host") == 0) {
|
||||
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG6_ERR_INVALID_IP_CONFIG), gShellNetwork2HiiHandle, Status);
|
||||
ShellStatus = SHELL_INVALID_PARAMETER;
|
||||
goto ON_EXIT;
|
||||
} else if (StrCmp (VarArg->Arg, L"gw") == 0) {
|
||||
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG6_ERR_INVALID_GW_CONFIG), gShellNetwork2HiiHandle, Status);
|
||||
ShellStatus = SHELL_INVALID_PARAMETER;
|
||||
goto ON_EXIT;
|
||||
} else if (StrCmp (VarArg->Arg, L"dns") == 0) {
|
||||
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG6_ERR_INVALID_DNS_CONFIG), gShellNetwork2HiiHandle, Status);
|
||||
ShellStatus = SHELL_INVALID_PARAMETER;
|
||||
goto ON_EXIT;
|
||||
if (VarArg != NULL) {
|
||||
if (StrCmp (VarArg->Arg, L"host") == 0) {
|
||||
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG6_ERR_INVALID_IP_CONFIG), gShellNetwork2HiiHandle, Status);
|
||||
ShellStatus = SHELL_INVALID_PARAMETER;
|
||||
goto ON_EXIT;
|
||||
} else if (StrCmp (VarArg->Arg, L"gw") == 0) {
|
||||
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG6_ERR_INVALID_GW_CONFIG), gShellNetwork2HiiHandle, Status);
|
||||
ShellStatus = SHELL_INVALID_PARAMETER;
|
||||
goto ON_EXIT;
|
||||
} else if (StrCmp (VarArg->Arg, L"dns") == 0) {
|
||||
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG6_ERR_INVALID_DNS_CONFIG), gShellNetwork2HiiHandle, Status);
|
||||
ShellStatus = SHELL_INVALID_PARAMETER;
|
||||
goto ON_EXIT;
|
||||
}
|
||||
}
|
||||
|
||||
} else if (StrCmp (VarArg->Arg, L"man") == 0) {
|
||||
//
|
||||
// Set manual config policy.
|
||||
|
|
Loading…
Reference in New Issue