]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ShellPkg/DrvDiag: Handle memory allocation failure
authorRuiyu Ni <ruiyu.ni@intel.com>
Wed, 13 Jul 2016 07:44:43 +0000 (15:44 +0800)
committerRuiyu Ni <ruiyu.ni@intel.com>
Mon, 18 Jul 2016 02:55:45 +0000 (10:55 +0800)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
ShellPkg/Library/UefiShellDriver1CommandsLib/DrvDiag.c

index 973a99505e5418dcfd7999d11473ba8fb6a64e3d..1173f8d7bee0746f4f48db7fe732698b8e50f2af 100644 (file)
@@ -2,7 +2,7 @@
   Main file for DrvDiag shell Driver1 function.\r
 \r
   (C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>\r
-  Copyright (c) 2010 - 2013, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.<BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
@@ -94,7 +94,9 @@ DoDiagnostics (
 \r
   if (DriverHandle != NULL) {\r
     DriverHandleList = AllocateZeroPool(2*sizeof(EFI_HANDLE));\r
-    ASSERT(DriverHandleList!=NULL);\r
+    if (DriverHandleList == NULL) {\r
+      return EFI_OUT_OF_RESOURCES;\r
+    }\r
     DriverHandleList[0] = DriverHandle;\r
     DriverHandleListCount = 1;\r
   } else {\r
@@ -109,7 +111,10 @@ DoDiagnostics (
 \r
   if (ControllerHandle != NULL) {\r
     ControllerHandleList = AllocateZeroPool(2*sizeof(EFI_HANDLE));\r
-    ASSERT(ControllerHandleList!=NULL);\r
+    if (ControllerHandleList == NULL) {\r
+      SHELL_FREE_NON_NULL (DriverHandleList);\r
+      return EFI_OUT_OF_RESOURCES;\r
+    }\r
     ControllerHandleList[0] = ControllerHandle;\r
     ControllerHandleListCount = 1;\r
   } else {\r
@@ -118,7 +123,11 @@ DoDiagnostics (
 \r
   if (ChildHandle != NULL) {\r
     ChildHandleList = AllocateZeroPool(2*sizeof(EFI_HANDLE));\r
-    ASSERT(ChildHandleList!=NULL);\r
+    if (ChildHandleList != NULL) {\r
+      SHELL_FREE_NON_NULL (ControllerHandleList);\r
+      SHELL_FREE_NON_NULL (DriverHandleList);\r
+      return EFI_OUT_OF_RESOURCES;\r
+    }\r
     ChildHandleList[0] = ChildHandle;\r
     ChildHandleListCount = 1;\r
   } else if (AllChilds) {\r