Hi, Thanks for the fix, I will test it and revert in a day or two.
Regards, Shaveta -----Original Message----- From: Carsey, Jaben [mailto:jaben.car...@intel.com] Sent: Friday, December 04, 2015 11:38 PM To: Wu, Jiaxin <jiaxin...@intel.com>; edk2-devel@lists.01.org Cc: Leekha Shaveta-B20052 <shav...@freescale.com>; Ye, Ting <ting...@intel.com>; Carsey, Jaben <jaben.car...@intel.com> Subject: RE: [Patch] ShellPkg: Fix ifconfig hang issue with incomplete parameters Looks good to me. I think we should wait for Leekha for up to a few days to confirm that this fixes the problem at their location. Reviewed-by: Jaben Carsey <jaben.car...@intel.com> -Jaben > -----Original Message----- > From: Wu, Jiaxin > Sent: Thursday, December 03, 2015 5:27 PM > To: edk2-devel@lists.01.org > Cc: Leekha Shaveta <shav...@freescale.com>; Carsey, Jaben > <jaben.car...@intel.com>; Ye, Ting <ting...@intel.com> > Subject: [Patch] ShellPkg: Fix ifconfig hang issue with incomplete > parameters > Importance: High > > This patch is used to fix ifconfig hang issue with incomplete > parameters. In addition, some error related output information is > added to increase the interactivity. > > Cc: Leekha Shaveta <shav...@freescale.com> > Cc: Carsey Jaben <jaben.car...@intel.com> > Cc: Ye Ting <ting...@intel.com> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Jiaxin Wu <jiaxin...@intel.com> > --- > .../UefiShellNetwork1CommandsLib/Ifconfig.c | 61 ++++++++++++++++-- > --- > .../UefiShellNetwork1CommandsLib.uni | Bin 21094 -> 21256 bytes > 2 files changed, 47 insertions(+), 14 deletions(-) > > diff --git a/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ifconfig.c > b/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ifconfig.c > index fb6f575..f8dbc88 100644 > --- a/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ifconfig.c > +++ b/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ifconfig.c > @@ -826,10 +826,11 @@ IfConfigClearInterfaceInfo ( > Ip4Config2DataTypePolicy, > sizeof (EFI_IP4_CONFIG2_POLICY), > &Policy > ); > if (EFI_ERROR (Status)) { > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_AD), > gShellNetwork1HiiHandle, L"ifconfig"); > ShellStatus = SHELL_ACCESS_DENIED; > break; > } > } > > @@ -902,10 +903,11 @@ IfConfigSetInterfaceInfo ( > NULL, > NULL, > &TimeOutEvt > ); > if (EFI_ERROR (Status)) { > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_AD), > gShellNetwork1HiiHandle, L"ifconfig"); > ShellStatus = SHELL_ACCESS_DENIED; > goto ON_EXIT; > } > > Status = gBS->CreateEvent ( > @@ -914,10 +916,11 @@ IfConfigSetInterfaceInfo ( > IfConfigManualAddressNotify, > &IsAddressOk, > &MappedEvt > ); > if (EFI_ERROR (Status)) { > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_AD), > gShellNetwork1HiiHandle, L"ifconfig"); > ShellStatus = SHELL_ACCESS_DENIED; > goto ON_EXIT; > } > > // > @@ -972,10 +975,11 @@ IfConfigSetInterfaceInfo ( > // > if (StrCmp(VarArg->Arg, L"dhcp") == 0) { > if (IfCb->Policy == Ip4Config2PolicyDhcp) { > Status = IfConfigStartIp4 (IfCb->NicHandle, gImageHandle); > if (EFI_ERROR(Status)) { > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN > + (STR_GEN_ERR_AD), > gShellNetwork1HiiHandle, L"ifconfig"); > ShellStatus = SHELL_ACCESS_DENIED; > goto ON_EXIT; > } > } else { > // > @@ -987,74 +991,100 @@ IfConfigSetInterfaceInfo ( > Ip4Config2DataTypePolicy, > sizeof (EFI_IP4_CONFIG2_POLICY), > &Policy > ); > if (EFI_ERROR(Status)) { > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN > + (STR_GEN_ERR_AD), > gShellNetwork1HiiHandle, L"ifconfig"); > ShellStatus = SHELL_ACCESS_DENIED; > goto ON_EXIT; > } > } > > VarArg= VarArg->Next; > > } else if (StrCmp (VarArg->Arg, L"static") == 0) { > - // > - // Set manual config policy. > - // > - Policy = Ip4Config2PolicyStatic; > - Status = IfCb->IfCfg->SetData ( > - IfCb->IfCfg, > - Ip4Config2DataTypePolicy, > - sizeof (EFI_IP4_CONFIG2_POLICY), > - &Policy > - ); > - if (EFI_ERROR(Status)) { > - ShellStatus = SHELL_ACCESS_DENIED; > + VarArg= VarArg->Next; > + if (VarArg == NULL) { > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN > (STR_IFCONFIG_LACK_COMMAND), gShellNetwork1HiiHandle); > + ShellStatus = SHELL_INVALID_PARAMETER; > goto ON_EXIT; > } > > - VarArg= VarArg->Next; > - > ZeroMem (&ManualAddress, sizeof (ManualAddress)); > > // > // Get manual IP address. > // > Status = NetLibStrToIp4 (VarArg->Arg, &ManualAddress.Address); > if (EFI_ERROR(Status)) { > + ShellPrintHiiEx(-1, -1, NULL,STRING_TOKEN > (STR_IFCONFIG_INVALID_IPADDRESS), gShellNetwork1HiiHandle, VarArg- > >Arg); > ShellStatus = SHELL_INVALID_PARAMETER; > goto ON_EXIT; > } > > // > // Get subnetmask. > // > VarArg = VarArg->Next; > + if (VarArg == NULL) { > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN > (STR_IFCONFIG_LACK_COMMAND), gShellNetwork1HiiHandle); > + ShellStatus = SHELL_INVALID_PARAMETER; > + goto ON_EXIT; > + } > + > Status = NetLibStrToIp4 (VarArg->Arg, &ManualAddress.SubnetMask); > if (EFI_ERROR(Status)) { > + ShellPrintHiiEx(-1, -1, NULL,STRING_TOKEN > (STR_IFCONFIG_INVALID_IPADDRESS), gShellNetwork1HiiHandle, VarArg- > >Arg); > ShellStatus = SHELL_INVALID_PARAMETER; > goto ON_EXIT; > } > > // > // Get gateway. > // > VarArg = VarArg->Next; > + if (VarArg == NULL) { > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN > (STR_IFCONFIG_LACK_COMMAND), gShellNetwork1HiiHandle); > + ShellStatus = SHELL_INVALID_PARAMETER; > + goto ON_EXIT; > + } > + > Status = NetLibStrToIp4 (VarArg->Arg, &Gateway); > if (EFI_ERROR(Status)) { > + ShellPrintHiiEx(-1, -1, NULL,STRING_TOKEN > (STR_IFCONFIG_INVALID_IPADDRESS), gShellNetwork1HiiHandle, VarArg- > >Arg); > ShellStatus = SHELL_INVALID_PARAMETER; > goto ON_EXIT; > } > + > + // > + // Set manual config policy. > + // > + Policy = Ip4Config2PolicyStatic; > + Status = IfCb->IfCfg->SetData ( > + IfCb->IfCfg, > + Ip4Config2DataTypePolicy, > + sizeof (EFI_IP4_CONFIG2_POLICY), > + &Policy > + ); > + if (EFI_ERROR(Status)) { > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_AD), > gShellNetwork1HiiHandle, L"ifconfig"); > + ShellStatus = SHELL_ACCESS_DENIED; > + goto ON_EXIT; > + } > > + // > + // Set Manual Address. > + // > IsAddressOk = FALSE; > > Status = IfCb->IfCfg->RegisterDataNotify ( > IfCb->IfCfg, > Ip4Config2DataTypeManualAddress, > MappedEvt > ); > if (EFI_ERROR (Status)) { > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN > (STR_IFCONFIG_SET_ADDR_FAILED), gShellNetwork1HiiHandle, Status); > ShellStatus = SHELL_ACCESS_DENIED; > goto ON_EXIT; > } > > DataSize = sizeof (EFI_IP4_CONFIG2_MANUAL_ADDRESS); @@ -1099,10 > +1129,11 @@ IfConfigSetInterfaceInfo ( > Ip4Config2DataTypeGateway, > DataSize, > &Gateway > ); > if (EFI_ERROR (Status)) { > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN > (STR_IFCONFIG_SET_ADDR_FAILED), gShellNetwork1HiiHandle, Status); > ShellStatus = SHELL_ACCESS_DENIED; > goto ON_EXIT; > } > > VarArg = VarArg->Next; > @@ -1124,10 +1155,11 @@ IfConfigSetInterfaceInfo ( > Tmp = VarArg; > Index = 0; > while (Tmp != NULL) { > Status = NetLibStrToIp4 (Tmp->Arg, Dns + Index); > if (EFI_ERROR(Status)) { > + ShellPrintHiiEx(-1, -1, NULL,STRING_TOKEN > (STR_IFCONFIG_INVALID_IPADDRESS), gShellNetwork1HiiHandle, Tmp->Arg); > ShellStatus = SHELL_INVALID_PARAMETER; > goto ON_EXIT; > } > Index ++; > Tmp = Tmp->Next; > @@ -1145,10 +1177,11 @@ IfConfigSetInterfaceInfo ( > Ip4Config2DataTypeDnsServer, > DataSize, > Dns > ); > if (EFI_ERROR (Status)) { > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_AD), > gShellNetwork1HiiHandle, L"ifconfig"); > ShellStatus = SHELL_ACCESS_DENIED; > goto ON_EXIT; > } > } > } > diff --git > a/ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1Comm > andsLib.uni > b/ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1Comm > andsLib.uni > index > 43259591820582cc38937ad680739fcff21b96c5..aa3a38a55fadd82f73d581f > 3678466db23af2645 100644 > GIT binary patch > delta 132 > zcmaF1gt228<AxB$$qt$<ljkV#@dq$CGPnR?5Q8g2FhlU<kMfq2KPd=JPSO)&w > 3>X8 > zLv*r>oYCeGMJ;AcH-<!pOokkWRE87=1%?uad>~m2<dp#FM4(s- > LlKZy%uqZzQNeuj > c3{}3(PgHEwCNp{2OwRH?2ckDm^SQtZ0B9B^1poj5 > > delta 74 > zcmeBJ#`tUr<AxB$&2maw%<P^FB@7A- > X_Gxwr8gI;HmGqYGUNcE0z*DS(d3I>_LKE| > V&ar~UCL1b<Gebo;TlijJ1pqo#7J2{x > > -- > 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel