]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Fix the use of ASSERT and other fixes to memory allocation failures (like free before...
authorJaben Carsey <jaben.carsey@intel.com>
Tue, 5 Aug 2014 23:16:39 +0000 (23:16 +0000)
committerjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 5 Aug 2014 23:16:39 +0000 (23:16 +0000)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jaben Carsey <jaben.carsey@intel.com>
Reviewed-by: Erik Bjorge <erik.c.bjorge@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15759 6f19259b-4bc3-4df7-8a09-765794883524

ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c

index ef5acd7da801bbf8dccf15edaa6372176c624bcf..ebb84dd55ec1d5405221370d65b9c3b8c1bbb6f3 100644 (file)
@@ -1392,7 +1392,9 @@ ShellCommandUpdateMapping (
     // Get all Device Paths\r
     //\r
     DevicePathList = AllocateZeroPool(sizeof(EFI_DEVICE_PATH_PROTOCOL*) * Count);\r
     // Get all Device Paths\r
     //\r
     DevicePathList = AllocateZeroPool(sizeof(EFI_DEVICE_PATH_PROTOCOL*) * Count);\r
-    ASSERT(DevicePathList != NULL);\r
+    if (DevicePathList == NULL) {\r
+      return (EFI_OUT_OF_RESOURCES);\r
+    }\r
 \r
     for (Count = 0 ; HandleList[Count] != NULL ; Count++) {\r
       DevicePathList[Count] = DevicePathFromHandle(HandleList[Count]);\r
 \r
     for (Count = 0 ; HandleList[Count] != NULL ; Count++) {\r
       DevicePathList[Count] = DevicePathFromHandle(HandleList[Count]);\r
@@ -1408,7 +1410,7 @@ ShellCommandUpdateMapping (
     //\r
     // Assign new Mappings to remainders\r
     //\r
     //\r
     // Assign new Mappings to remainders\r
     //\r
-    for (Count = 0 ; HandleList[Count] != NULL && !EFI_ERROR(Status); Count++) {\r
+    for (Count = 0 ; !EFI_ERROR(Status) && HandleList[Count] != NULL && !EFI_ERROR(Status); Count++) {\r
       //\r
       // Skip ones that already have\r
       //\r
       //\r
       // Skip ones that already have\r
       //\r
@@ -1419,7 +1421,10 @@ ShellCommandUpdateMapping (
       // Get default name\r
       //\r
       NewDefaultName = ShellCommandCreateNewMappingName(MappingTypeFileSystem);\r
       // Get default name\r
       //\r
       NewDefaultName = ShellCommandCreateNewMappingName(MappingTypeFileSystem);\r
-      ASSERT(NewDefaultName != NULL);\r
+      if (NewDefaultName == NULL) {\r
+        Status = EFI_OUT_OF_RESOURCES;\r
+        break;\r
+      }\r
 \r
       //\r
       // Call shell protocol SetMap function now...\r
 \r
       //\r
       // Call shell protocol SetMap function now...\r
@@ -1496,11 +1501,14 @@ ConvertEfiFileProtocolToShellHandle(
     }\r
     NewNode             = AllocateZeroPool(sizeof(BUFFER_LIST));\r
     if (NewNode == NULL) {\r
     }\r
     NewNode             = AllocateZeroPool(sizeof(BUFFER_LIST));\r
     if (NewNode == NULL) {\r
+      SHELL_FREE_NON_NULL(Buffer);\r
       return (NULL);\r
     }\r
     Buffer->FileHandle  = (EFI_FILE_PROTOCOL*)Handle;\r
     Buffer->Path        = StrnCatGrow(&Buffer->Path, NULL, Path, 0);\r
     if (Buffer->Path == NULL) {\r
       return (NULL);\r
     }\r
     Buffer->FileHandle  = (EFI_FILE_PROTOCOL*)Handle;\r
     Buffer->Path        = StrnCatGrow(&Buffer->Path, NULL, Path, 0);\r
     if (Buffer->Path == NULL) {\r
+      SHELL_FREE_NON_NULL(NewNode);\r
+      SHELL_FREE_NON_NULL(Buffer);\r
       return (NULL);\r
     }\r
     NewNode->Buffer     = Buffer;\r
       return (NULL);\r
     }\r
     NewNode->Buffer     = Buffer;\r
@@ -1638,7 +1646,6 @@ FreeBufferList (
       ; BufferListEntry = (BUFFER_LIST *)GetFirstNode(&List->Link)\r
      ){\r
     RemoveEntryList(&BufferListEntry->Link);\r
       ; BufferListEntry = (BUFFER_LIST *)GetFirstNode(&List->Link)\r
      ){\r
     RemoveEntryList(&BufferListEntry->Link);\r
-    ASSERT(BufferListEntry->Buffer != NULL);\r
     if (BufferListEntry->Buffer != NULL) {\r
       FreePool(BufferListEntry->Buffer);\r
     }\r
     if (BufferListEntry->Buffer != NULL) {\r
       FreePool(BufferListEntry->Buffer);\r
     }\r