]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ShellPkg: Fix memory leak in 'ShellOpenFileByName'.
authorYao Jiewen <Jiewen.Yao@intel.com>
Fri, 25 Dec 2015 01:24:16 +0000 (01:24 +0000)
committershenshushi <shenshushi@Edk2>
Fri, 25 Dec 2015 01:24:16 +0000 (01:24 +0000)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Yao Jiewen <Jiewen.Yao@intel.com>
Reviewed-by: Qiu Shumin <shumin.qiu@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19524 6f19259b-4bc3-4df7-8a09-765794883524

ShellPkg/Library/UefiShellLib/UefiShellLib.c

index 44ac382980c0f3edbb8e3dcd16e07f5a5279b892..9e815c56a6c8f7106965c04de1c90397ba465c7f 100644 (file)
@@ -673,6 +673,7 @@ ShellOpenFileByName(
   EFI_STATUS                    Status;\r
   EFI_FILE_INFO                 *FileInfo;\r
   CHAR16                        *FileNameCopy;\r
   EFI_STATUS                    Status;\r
   EFI_FILE_INFO                 *FileInfo;\r
   CHAR16                        *FileNameCopy;\r
+  EFI_STATUS                    Status2;\r
 \r
   //\r
   // ASSERT if FileName is NULL\r
 \r
   //\r
   // ASSERT if FileName is NULL\r
@@ -719,8 +720,12 @@ ShellOpenFileByName(
       FileInfo = FileFunctionMap.GetFileInfo(*FileHandle);\r
       ASSERT(FileInfo != NULL);\r
       FileInfo->Attribute = Attributes;\r
       FileInfo = FileFunctionMap.GetFileInfo(*FileHandle);\r
       ASSERT(FileInfo != NULL);\r
       FileInfo->Attribute = Attributes;\r
-      Status = FileFunctionMap.SetFileInfo(*FileHandle, FileInfo);\r
+      Status2 = FileFunctionMap.SetFileInfo(*FileHandle, FileInfo);\r
       FreePool(FileInfo);\r
       FreePool(FileInfo);\r
+      if (EFI_ERROR (Status2)) {\r
+        gEfiShellProtocol->CloseFile(*FileHandle);\r
+      }\r
+      Status = Status2;\r
     }\r
     return (Status);\r
   }\r
     }\r
     return (Status);\r
   }\r