summaryrefslogtreecommitdiffstats
path: root/MdeModulePkg
diff options
context:
space:
mode:
authorPaulo Alcantara <pcacjr@zytor.com>2017-09-12 09:30:23 +0800
committerStar Zeng <star.zeng@intel.com>2017-09-15 09:38:05 +0800
commit11b4463e096523fe03ac840472d483652ae93904 (patch)
treeb667c532c7f5a12b83dc908389ebaf8c82927198 /MdeModulePkg
parent54537008a2f7d4e8a35507af8b523e7b678abacd (diff)
downloadedk2-11b4463e096523fe03ac840472d483652ae93904.tar.gz
edk2-11b4463e096523fe03ac840472d483652ae93904.tar.bz2
edk2-11b4463e096523fe03ac840472d483652ae93904.zip
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>
Diffstat (limited to 'MdeModulePkg')
-rw-r--r--MdeModulePkg/Universal/Disk/UdfDxe/File.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/MdeModulePkg/Universal/Disk/UdfDxe/File.c b/MdeModulePkg/Universal/Disk/UdfDxe/File.c
index e7159ff861..01361141bb 100644
--- a/MdeModulePkg/Universal/Disk/UdfDxe/File.c
+++ b/MdeModulePkg/Universal/Disk/UdfDxe/File.c
@@ -692,7 +692,8 @@ UdfSetPosition (
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 the file handle is a directory, the _only_ position that may be set is