summaryrefslogtreecommitdiffstats
path: root/ShellPkg/DynamicCommand
diff options
context:
space:
mode:
authorJiaxin Wu <jiaxin.wu@intel.com>2018-04-26 14:13:57 +0800
committerJiaxin Wu <Jiaxin.wu@intel.com>2018-07-13 13:45:04 +0800
commit280f49b81170aee9176a47085b168ff3bc9fd3e7 (patch)
tree6ed14b51ca4d4be66c194c48701297fb1e4eee2c /ShellPkg/DynamicCommand
parent0c6f94dae5e3ca57fe6093ce2fa4d78fdd061857 (diff)
downloadedk2-280f49b81170aee9176a47085b168ff3bc9fd3e7.tar.gz
edk2-280f49b81170aee9176a47085b168ff3bc9fd3e7.tar.bz2
edk2-280f49b81170aee9176a47085b168ff3bc9fd3e7.zip
ShellPkg/TftpDynamicCommand: Fix the potential assertion and memory leak issue.
This patch is to fix the issue reported from https://bugzilla.tianocore.org/show_bug.cgi?id=925. DataSize variable was not assigned the value if ShellOpenFileByName returns error. In the such a case, it should not be used to FreePages. Instead, DataSize can be used to record the file size once DownloadFile successfully. Cc: Ye Ting <ting.ye@intel.com> Cc: Fu Siyuan <siyuan.fu@intel.com> Cc: Jaben Carsey <jaben.carsey@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Wu Jiaxin <jiaxin.wu@intel.com> Reviewed-by: Fu Siyuan <siyuan.fu@intel.com> Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
Diffstat (limited to 'ShellPkg/DynamicCommand')
-rw-r--r--ShellPkg/DynamicCommand/TftpDynamicCommand/Tftp.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/ShellPkg/DynamicCommand/TftpDynamicCommand/Tftp.c b/ShellPkg/DynamicCommand/TftpDynamicCommand/Tftp.c
index e2491cd54c..44be6d4e76 100644
--- a/ShellPkg/DynamicCommand/TftpDynamicCommand/Tftp.c
+++ b/ShellPkg/DynamicCommand/TftpDynamicCommand/Tftp.c
@@ -519,6 +519,8 @@ RunTftp (
goto NextHandle;
}
+ DataSize = FileSize;
+
if (!EFI_ERROR (ShellFileExists (LocalFilePath))) {
ShellDeleteFileByName (LocalFilePath);
}
@@ -539,7 +541,6 @@ RunTftp (
goto NextHandle;
}
- DataSize = FileSize;
Status = ShellWriteFile (FileHandle, &FileSize, Data);
if (!EFI_ERROR (Status)) {
ShellStatus = SHELL_SUCCESS;