[edk2] [Patch] ShellPkg/TftpDynamicCommand: Fix the potential assertion and memory leak issue.

Jiaxin Wu posted 1 patch 5 years, 9 months ago
Failed in applying to current master (apply log)
ShellPkg/DynamicCommand/TftpDynamicCommand/Tftp.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
[edk2] [Patch] ShellPkg/TftpDynamicCommand: Fix the potential assertion and memory leak issue.
Posted by Jiaxin Wu 5 years, 9 months ago
From: Jiaxin Wu <jiaxin.wu@intel.com>

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>
---
 ShellPkg/DynamicCommand/TftpDynamicCommand/Tftp.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

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
@@ -517,10 +517,12 @@ RunTftp (
         mTftpHiiHandle, RemoteFilePath, NicName, Status
       );
       goto NextHandle;
     }
 
+    DataSize = FileSize;
+
     if (!EFI_ERROR (ShellFileExists (LocalFilePath))) {
       ShellDeleteFileByName (LocalFilePath);
     }
 
     Status = ShellOpenFileByName (
@@ -537,11 +539,10 @@ RunTftp (
         mTftpHiiHandle, L"tftp", LocalFilePath
       );
       goto NextHandle;
     }
 
-    DataSize = FileSize;
     Status = ShellWriteFile (FileHandle, &FileSize, Data);
     if (!EFI_ERROR (Status)) {
       ShellStatus = SHELL_SUCCESS;
     } else {
       ShellPrintHiiEx (
-- 
2.17.1.windows.2

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [Patch] ShellPkg/TftpDynamicCommand: Fix the potential assertion and memory leak issue.
Posted by Fu, Siyuan 5 years, 9 months ago

Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>

> -----Original Message-----
> From: Wu, Jiaxin
> Sent: Thursday, July 12, 2018 8:44 AM
> To: edk2-devel@lists.01.org
> Cc: Wu, Jiaxin <jiaxin.wu@intel.com>; Ye, Ting <ting.ye@intel.com>; Fu,
> Siyuan <siyuan.fu@intel.com>; Carsey, Jaben <jaben.carsey@intel.com>
> Subject: [Patch] ShellPkg/TftpDynamicCommand: Fix the potential assertion
> and memory leak issue.
> 
> From: Jiaxin Wu <jiaxin.wu@intel.com>
> 
> 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>
> ---
>  ShellPkg/DynamicCommand/TftpDynamicCommand/Tftp.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> 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
> @@ -517,10 +517,12 @@ RunTftp (
>          mTftpHiiHandle, RemoteFilePath, NicName, Status
>        );
>        goto NextHandle;
>      }
> 
> +    DataSize = FileSize;
> +
>      if (!EFI_ERROR (ShellFileExists (LocalFilePath))) {
>        ShellDeleteFileByName (LocalFilePath);
>      }
> 
>      Status = ShellOpenFileByName (
> @@ -537,11 +539,10 @@ RunTftp (
>          mTftpHiiHandle, L"tftp", LocalFilePath
>        );
>        goto NextHandle;
>      }
> 
> -    DataSize = FileSize;
>      Status = ShellWriteFile (FileHandle, &FileSize, Data);
>      if (!EFI_ERROR (Status)) {
>        ShellStatus = SHELL_SUCCESS;
>      } else {
>        ShellPrintHiiEx (
> --
> 2.17.1.windows.2

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [Patch] ShellPkg/TftpDynamicCommand: Fix the potential assertion and memory leak issue.
Posted by Carsey, Jaben 5 years, 9 months ago
Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>

> -----Original Message-----
> From: Fu, Siyuan
> Sent: Wednesday, July 11, 2018 5:46 PM
> To: Wu, Jiaxin <jiaxin.wu@intel.com>; edk2-devel@lists.01.org
> Cc: Ye, Ting <ting.ye@intel.com>; Carsey, Jaben <jaben.carsey@intel.com>
> Subject: RE: [Patch] ShellPkg/TftpDynamicCommand: Fix the potential
> assertion and memory leak issue.
> Importance: High
> 
> 
> 
> Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>
> 
> > -----Original Message-----
> > From: Wu, Jiaxin
> > Sent: Thursday, July 12, 2018 8:44 AM
> > To: edk2-devel@lists.01.org
> > Cc: Wu, Jiaxin <jiaxin.wu@intel.com>; Ye, Ting <ting.ye@intel.com>; Fu,
> > Siyuan <siyuan.fu@intel.com>; Carsey, Jaben <jaben.carsey@intel.com>
> > Subject: [Patch] ShellPkg/TftpDynamicCommand: Fix the potential
> assertion
> > and memory leak issue.
> >
> > From: Jiaxin Wu <jiaxin.wu@intel.com>
> >
> > 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>
> > ---
> >  ShellPkg/DynamicCommand/TftpDynamicCommand/Tftp.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > 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
> > @@ -517,10 +517,12 @@ RunTftp (
> >          mTftpHiiHandle, RemoteFilePath, NicName, Status
> >        );
> >        goto NextHandle;
> >      }
> >
> > +    DataSize = FileSize;
> > +
> >      if (!EFI_ERROR (ShellFileExists (LocalFilePath))) {
> >        ShellDeleteFileByName (LocalFilePath);
> >      }
> >
> >      Status = ShellOpenFileByName (
> > @@ -537,11 +539,10 @@ RunTftp (
> >          mTftpHiiHandle, L"tftp", LocalFilePath
> >        );
> >        goto NextHandle;
> >      }
> >
> > -    DataSize = FileSize;
> >      Status = ShellWriteFile (FileHandle, &FileSize, Data);
> >      if (!EFI_ERROR (Status)) {
> >        ShellStatus = SHELL_SUCCESS;
> >      } else {
> >        ShellPrintHiiEx (
> > --
> > 2.17.1.windows.2

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel