Try to read the names from the biggest name space to the smallest.
Only at the end assert we have to have a name.

This fixes name enumeration on Windows 7 NTFS volumes.

svn path=/trunk/; revision=65239
This commit is contained in:
Pierre Schweitzer
2014-11-04 07:52:14 +00:00
parent ef9b3e68e3
commit 217a030519
+36 -4
View File
@@ -137,7 +137,15 @@ NtfsGetNameInformation(PDEVICE_EXTENSION DeviceExt,
DPRINT("NtfsGetNameInformation() called\n");
FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32);
FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_POSIX);
if (FileName == NULL)
{
FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32);
if (FileName == NULL)
{
FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS);
}
}
ASSERT(FileName != NULL);
Length = FileName->NameLength * sizeof (WCHAR);
@@ -165,7 +173,15 @@ NtfsGetDirectoryInformation(PDEVICE_EXTENSION DeviceExt,
DPRINT("NtfsGetDirectoryInformation() called\n");
FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32);
FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_POSIX);
if (FileName == NULL)
{
FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32);
if (FileName == NULL)
{
FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS);
}
}
ASSERT(FileName != NULL);
Length = FileName->NameLength * sizeof (WCHAR);
@@ -206,7 +222,15 @@ NtfsGetFullDirectoryInformation(PDEVICE_EXTENSION DeviceExt,
DPRINT("NtfsGetFullDirectoryInformation() called\n");
FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32);
FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_POSIX);
if (FileName == NULL)
{
FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32);
if (FileName == NULL)
{
FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS);
}
}
ASSERT(FileName != NULL);
Length = FileName->NameLength * sizeof (WCHAR);
@@ -248,7 +272,15 @@ NtfsGetBothDirectoryInformation(PDEVICE_EXTENSION DeviceExt,
DPRINT("NtfsGetBothDirectoryInformation() called\n");
FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32);
FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_POSIX);
if (FileName == NULL)
{
FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32);
if (FileName == NULL)
{
FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS);
}
}
ASSERT(FileName != NULL);
ShortFileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS);