MdeModulePkg FvSimpleFileSystemDxe: Fix memory leak in Read function
authorVladimir Olovyannikov <vladimir.olovyannikov@broadcom.com>
Wed, 25 Jul 2018 19:47:49 +0000 (03:47 +0800)
committerStar Zeng <star.zeng@intel.com>
Fri, 27 Jul 2018 00:54:40 +0000 (08:54 +0800)
FvSimpleFileSystem on read always allocates a FileBuffer, and never frees
it. This causes memory leaks. It is especially bad for reading scripts
line-by-line. In some cases memory leak can exceed 1GB.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Vladimir Olovyannikiov <vladimir.olovyannikov@broadcom.com>
Reviewed-by: Star Zeng <star.zeng@intel.com>
MdeModulePkg/Universal/FvSimpleFileSystemDxe/FvSimpleFileSystem.c

index 746f2ce..fde2085 100644 (file)
@@ -704,6 +704,7 @@ FvSimpleFileSystemRead (
 \r
     Status = FvFsReadFile (File->Instance->FvProtocol, File->FvFileInfo, &FileSize, &FileBuffer);\r
     if (EFI_ERROR (Status)) {\r
+      FreePool (FileBuffer);\r
       return EFI_DEVICE_ERROR;\r
     }\r
 \r
@@ -714,6 +715,8 @@ FvSimpleFileSystemRead (
     CopyMem (Buffer, (UINT8*)FileBuffer + File->Position, *BufferSize);\r
     File->Position += *BufferSize;\r
 \r
+    FreePool (FileBuffer);\r
+\r
     return EFI_SUCCESS;\r
   }\r
 }\r