Revision: 14448
          http://sourceforge.net/p/edk2/code/14448
Author:   jcarsey
Date:     2013-06-28 22:44:21 +0000 (Fri, 28 Jun 2013)
Log Message:
-----------
ShellPkg: Verify memory and handle allocation failure.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: jaben carsey <[email protected]>
Reviewed-by: Eric Dong <[email protected]>

Modified Paths:
--------------
    trunk/edk2/ShellPkg/Library/UefiShellLevel2CommandsLib/Rm.c

Modified: trunk/edk2/ShellPkg/Library/UefiShellLevel2CommandsLib/Rm.c
===================================================================
--- trunk/edk2/ShellPkg/Library/UefiShellLevel2CommandsLib/Rm.c 2013-06-27 
18:18:24 UTC (rev 14447)
+++ trunk/edk2/ShellPkg/Library/UefiShellLevel2CommandsLib/Rm.c 2013-06-28 
22:44:21 UTC (rev 14448)
@@ -126,18 +126,26 @@
           // Update the node filename to have full path with file system 
identifier
           //
           TempName = AllocateZeroPool(StrSize(Node->FullName) + 
StrSize(Node2->FullName));
-          StrCpy(TempName, Node->FullName);
-          TempName[StrStr(TempName, L":")+1-TempName] = CHAR_NULL;
-          StrCat(TempName, Node2->FullName);
-          FreePool((VOID*)Node2->FullName);
-          Node2->FullName = TempName;
+          if (TempName == NULL) {
+            ShellStatus = EFI_OUT_OF_RESOURCES;
+          } else {
+            StrCpy(TempName, Node->FullName);
+            TempName[StrStr(TempName, L":")+1-TempName] = CHAR_NULL;
+            StrCat(TempName, Node2->FullName);
+            FreePool((VOID*)Node2->FullName);
+            Node2->FullName = TempName;
 
-          //
-          // Now try again to open the file
-          //
-          Node2->Status = gEfiShellProtocol->OpenFileByName (Node2->FullName, 
&Node2->Handle, EFI_FILE_MODE_READ|EFI_FILE_MODE_WRITE);
+            //
+            // Now try again to open the file
+            //
+            Node2->Status = gEfiShellProtocol->OpenFileByName 
(Node2->FullName, &Node2->Handle, EFI_FILE_MODE_READ|EFI_FILE_MODE_WRITE);
+          }
         }
-        ShellStatus = CascadeDelete(Node2, Quiet);
+        if (!EFI_ERROR(Node2->Status)) {
+          ShellStatus = CascadeDelete(Node2, Quiet);
+        } else if (ShellStatus == SHELL_SUCCESS) {
+          ShellStatus = Node2->Status;
+        }
         if (ShellStatus != SHELL_SUCCESS) {
           if (List!=NULL) {
             gEfiShellProtocol->FreeFileList(&List);

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to