From d291c4b327ca65b1d5f22efe9b4cf86c9bc08962 Mon Sep 17 00:00:00 2001 From: Yao Jiewen Date: Fri, 25 Dec 2015 02:13:44 +0000 Subject: ShellPkg: Fix memory leak in 'ShellOpenFileByName'. (Sync patch r19524 from main trunk.) Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Yao Jiewen Reviewed-by: Qiu Shumin git-svn-id: https://svn.code.sf.net/p/edk2/code/branches/UDK2015@19536 6f19259b-4bc3-4df7-8a09-765794883524 --- ShellPkg/Library/UefiShellLib/UefiShellLib.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ShellPkg/Library/UefiShellLib/UefiShellLib.c b/ShellPkg/Library/UefiShellLib/UefiShellLib.c index 44ac382980..9e815c56a6 100644 --- a/ShellPkg/Library/UefiShellLib/UefiShellLib.c +++ b/ShellPkg/Library/UefiShellLib/UefiShellLib.c @@ -673,6 +673,7 @@ ShellOpenFileByName( EFI_STATUS Status; EFI_FILE_INFO *FileInfo; CHAR16 *FileNameCopy; + EFI_STATUS Status2; // // ASSERT if FileName is NULL @@ -719,8 +720,12 @@ ShellOpenFileByName( FileInfo = FileFunctionMap.GetFileInfo(*FileHandle); ASSERT(FileInfo != NULL); FileInfo->Attribute = Attributes; - Status = FileFunctionMap.SetFileInfo(*FileHandle, FileInfo); + Status2 = FileFunctionMap.SetFileInfo(*FileHandle, FileInfo); FreePool(FileInfo); + if (EFI_ERROR (Status2)) { + gEfiShellProtocol->CloseFile(*FileHandle); + } + Status = Status2; } return (Status); } -- cgit v1.2.3