]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellNetwork1CommandsLib/Ping.c
ShellPkg/Dp: Add null pointer check
[mirror_edk2.git] / ShellPkg / Library / UefiShellNetwork1CommandsLib / Ping.c
index ca5c22a6188cf0e7d0f1a70af47c0b1c8af77dd3..bec9535a8b436338c91e94290fde58a900e43804 100644 (file)
@@ -2,7 +2,7 @@
   The implementation for Ping shell command.\r
 \r
   (C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>\r
-  Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.<BR>\r
   (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
 \r
   This program and the accompanying materials\r
@@ -629,6 +629,7 @@ ON_EXIT:
     Status = Private->ProtocolPointers.Receive (Private->IpProtocol, &Private->RxToken);\r
 \r
     if (EFI_ERROR (Status)) {\r
+      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PING_RECEIVE), gShellNetwork1HiiHandle, Status);\r
       Private->Status = EFI_ABORTED;\r
     }\r
   } else {\r
@@ -828,7 +829,11 @@ Ping6ReceiveEchoReply (
 \r
   Private->RxToken.Status = EFI_NOT_READY;\r
 \r
-  return (Private->ProtocolPointers.Receive (Private->IpProtocol, &Private->RxToken));\r
+  Status = Private->ProtocolPointers.Receive (Private->IpProtocol, &Private->RxToken);\r
+  if (EFI_ERROR (Status)) {\r
+    ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PING_RECEIVE), gShellNetwork1HiiHandle, Status);\r
+  }\r
+  return Status;\r
 }\r
 \r
 /**\r
@@ -961,7 +966,7 @@ PingCreateIpInstance (
   UINTN                            HandleNum;\r
   EFI_HANDLE                       *HandleBuffer;\r
   BOOLEAN                          UnspecifiedSrc;\r
-  BOOLEAN                          MediaPresent;\r
+  EFI_STATUS                       MediaStatus;\r
   EFI_SERVICE_BINDING_PROTOCOL     *EfiSb;\r
   VOID                             *IpXCfg;\r
   EFI_IP6_CONFIG_DATA              Ip6Config;\r
@@ -973,7 +978,7 @@ PingCreateIpInstance (
 \r
   HandleBuffer      = NULL;\r
   UnspecifiedSrc    = FALSE;\r
-  MediaPresent      = TRUE;\r
+  MediaStatus       = EFI_SUCCESS;\r
   EfiSb             = NULL;\r
   IpXInterfaceInfo  = NULL;\r
   IfInfoSize        = 0;\r
@@ -1030,8 +1035,8 @@ PingCreateIpInstance (
       //\r
       // Check media.\r
       //\r
-      NetLibDetectMedia (HandleBuffer[HandleIndex], &MediaPresent);\r
-      if (!MediaPresent) {\r
+      NetLibDetectMediaWaitTimeout (HandleBuffer[HandleIndex], 0, &MediaStatus);\r
+      if (MediaStatus != EFI_SUCCESS) {\r
         //\r
         // Skip this one.\r
         //\r