mirror of https://github.com/acidanthera/audk.git
MdeModulePkg/UdfDxe: Fix NULL pointer dereference
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=704 For root directory, the FID (File Identifier Descriptor) pointer is accessible through PRIVATE_UDF_FILE_DATA.Root, whereas non-root directory and regular files, their FIDs are accessible through PRIVATE_UDF_FILE_DATA.File. In UdfSetPosition(), the FID was retrieved through PRIVATE_UDF_FILE_DATA.File, hence when calling it with a root directory, PRIVATE_UDF_FILE_DATA.File.FileIdentifierDescriptor would be NULL and then dereferenced. This patch fixes the NULL pointer dereference by calling _FILE() to transparently return the correct UDF_FILE_INFO * which points to a valid FID descriptor of a specific file. Cc: Star Zeng <star.zeng@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Ruiyu Ni <ruiyu.ni@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Steven Shi <steven.shi@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Reported-by: Steven Shi <steven.shi@intel.com> Signed-off-by: Paulo Alcantara <pcacjr@zytor.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Star Zeng <star.zeng@intel.com>
This commit is contained in:
parent
54537008a2
commit
11b4463e09
|
@ -692,7 +692,8 @@ UdfSetPosition (
|
||||||
|
|
||||||
PrivFileData = PRIVATE_UDF_FILE_DATA_FROM_THIS (This);
|
PrivFileData = PRIVATE_UDF_FILE_DATA_FROM_THIS (This);
|
||||||
|
|
||||||
FileIdentifierDesc = PrivFileData->File.FileIdentifierDesc;
|
FileIdentifierDesc = _FILE (PrivFileData)->FileIdentifierDesc;
|
||||||
|
ASSERT (FileIdentifierDesc != NULL);
|
||||||
if (IS_FID_DIRECTORY_FILE (FileIdentifierDesc)) {
|
if (IS_FID_DIRECTORY_FILE (FileIdentifierDesc)) {
|
||||||
//
|
//
|
||||||
// If the file handle is a directory, the _only_ position that may be set is
|
// If the file handle is a directory, the _only_ position that may be set is
|
||||||
|
|
Loading…
Reference in New Issue