audk/MdeModulePkg/Universal
Hao Wu 7a96634889 MdeModulePkg/UdfDxe: Avoid possible loss track of allocated buffer
In function FindFileEntry():

Instead of using the function parameter 'FileEntry', use a local
variable to store the buffer allocated for disk read operation.

For the below calling stack:
UdfOpenVolume() -> FindRootDirectory() -> FindFileEntry()

In FindFileEntry(), the call to 'DiskIo->ReadDisk()' is possible (e.g.
media change for a CD/DVD ROM device) to trigger a re-install of the
BlockIO(2) protocol which will further lead to a call of the BindingStop()
& BingdingStart() of the UdfDxe driver.

Meanwhile, for the above listed calling stack, the '**FileEntry'
parameter passed into FindFileEntry() is '&PrivFsData->Root'. 'PrivFsData'
is a driver-managed private data, it will be freed in BindingStop() and
re-allocate in BingdingStart().

In such case, if '*FileEntry' is used to store the allocated buffer, the
information will be lost if 'DiskIo->ReadDisk()' triggers a re-install of
the BlockIO(2) protocol. The subsequent call of the FreePool API:

FreePool (*FileEntry);

will cause issues.

This commit uses a local variable to store the allocated buffer.

Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Paulo Alcantara <pcacjr@zytor.com>
2017-11-20 08:54:22 +08:00
..
Acpi MdeModulePkg/S3SaveState: Extract arguments in correct order 2017-10-10 13:23:10 +08:00
BdsDxe MdeModulePkg: Deprecate EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 2017-11-01 22:25:36 +08:00
BootManagerPolicyDxe
CapsulePei MdeModulePkg: Error Level is not used correctly 2017-04-12 08:56:12 +08:00
CapsuleRuntimeDxe MdeModulePkg: Error Level is not used correctly 2017-04-12 08:56:12 +08:00
Console MdeModulePkg/TerminalDxe: Fix PCANSI mapping for TRIANGLE and ARROW 2017-11-13 09:39:04 -08:00
DebugPortDxe
DebugSupportDxe MdeModulePkg/DebugSupportDxe: Fix XCODE5 build failure 2017-05-24 16:44:21 -07:00
DevicePathDxe
Disk MdeModulePkg/UdfDxe: Avoid possible loss track of allocated buffer 2017-11-20 08:54:22 +08:00
DisplayEngineDxe MdeModulePkg/DisplayEngine: Add implementation of HiiPopup protocol 2017-08-23 10:37:14 +08:00
DriverHealthManagerDxe
DriverSampleDxe MdeModulePkg/DriverSample: Add questions with bit/union VarStore 2017-10-11 13:33:11 +08:00
EbcDxe
EsrtDxe MdeModulePkg: Update Ppi/Protocol/Guid usage in INF files 2017-10-10 18:10:25 +08:00
FaultTolerantWriteDxe
FaultTolerantWritePei
FileExplorerDxe
FvSimpleFileSystemDxe MdeModulePkg: Fix misuses of AllocateCopyPool 2017-11-08 17:13:03 +08:00
HiiDatabaseDxe MdeModulePkg: Fix misuses of AllocateCopyPool 2017-11-08 17:13:03 +08:00
HiiResourcesSampleDxe
LegacyRegion2Dxe
LoadFileOnFv2
LockBox/SmmLockBox MdeModulePkg: Error Level is not used correctly 2017-04-12 08:56:12 +08:00
MemoryTest
Metronome
MonotonicCounterRuntimeDxe
Network MdeModulePkg/SNP: remove redundant DEBUG print in SNP Transmit.c 2017-11-16 14:09:21 +08:00
PCD MdeModulePkg PCD: Fix TmpTokenSpaceBufferCount not assigned correctly 2017-05-19 11:32:11 +08:00
PcatSingleSegmentPciCfg2Pei
PlatformDriOverrideDxe MdeModulePkg: Error Level is not used correctly 2017-04-12 08:56:12 +08:00
PrintDxe
PropertiesTableAttributesDxe
RegularExpressionDxe MdeModulePkg: Delete useless case code 2017-08-16 16:55:22 +08:00
ReportStatusCodeRouter
ResetSystemRuntimeDxe MdeModulePkg ResetSystem: Update the comments of ResetSystem() 2017-07-03 17:53:12 +08:00
SectionExtractionDxe
SectionExtractionPei
SecurityStubDxe MdeModulePkg: Update Ppi/Protocol/Guid usage in INF files 2017-10-10 18:10:25 +08:00
SerialDxe MdeModulePkg SerialDxe: Handle Timeout change more robustly 2017-11-09 08:59:03 +08:00
SetupBrowserDxe MdeModulePkg: Fix MSFT C4255 warning 2017-11-14 18:18:43 +08:00
SmbiosDxe
SmbiosMeasurementDxe MdeModulePkg SmbiosMeasurementDxe: Skip measurement for OEM type 2017-09-18 10:19:40 +08:00
SmmCommunicationBufferDxe
StatusCodeHandler
TimestampDxe
Variable MdeModulePkg: Deprecate EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 2017-11-01 22:25:36 +08:00
WatchdogTimerDxe