diff options
author | Yao Jiewen <Jiewen.Yao@intel.com> | 2015-12-25 01:24:16 +0000 |
---|---|---|
committer | shenshushi <shenshushi@Edk2> | 2015-12-25 01:24:16 +0000 |
commit | dd17e3feb7080e174ed540d9d85ad2fb56bc669b (patch) | |
tree | 95cddb18d9341a55ee465061472740017a4a9324 /ShellPkg/Library/UefiShellLib/UefiShellLib.c | |
parent | a5bc2ff8c9b8feeb6fb77cd1c840005c0316ccf4 (diff) | |
download | edk2-platforms-dd17e3feb7080e174ed540d9d85ad2fb56bc669b.tar.xz |
ShellPkg: Fix memory leak in 'ShellOpenFileByName'.
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
Diffstat (limited to 'ShellPkg/Library/UefiShellLib/UefiShellLib.c')
-rw-r--r-- | ShellPkg/Library/UefiShellLib/UefiShellLib.c | 7 |
1 files changed, 6 insertions, 1 deletions
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);
}
|