[NTFS]
[reactos.git] / reactos / drivers / filesystems / ntfs / mft.c
index 3a3f00e..9b658c6 100644 (file)
@@ -478,7 +478,7 @@ CompareFileName(PUNICODE_STRING FileName,
         UNICODE_STRING IntFileName;
         if (IndexEntry->FileName.NameType != NTFS_FILE_NAME_POSIX)
         {
-            ASSERT(NT_SUCCESS(RtlUpcaseUnicodeString(&IntFileName, FileName, TRUE)));
+            NT_VERIFY(NT_SUCCESS(RtlUpcaseUnicodeString(&IntFileName, FileName, TRUE)));
             Alloc = TRUE;
         }
         else
@@ -558,7 +558,7 @@ NtfsFindMftRecord(PDEVICE_EXTENSION Vcb,
         IndexRoot = (PINDEX_ROOT_ATTRIBUTE)IndexRecord;
         IndexEntry = (PINDEX_ENTRY_ATTRIBUTE)((PCHAR)&IndexRoot->Header + IndexRoot->Header.FirstEntryOffset);
         /* Index root is always resident. */
-        IndexEntryEnd = (PINDEX_ENTRY_ATTRIBUTE)(IndexRecord + IndexRootCtx->Record.Resident.ValueLength);
+        IndexEntryEnd = (PINDEX_ENTRY_ATTRIBUTE)(IndexRecord + IndexRoot->Header.TotalSizeOfEntries);
         ReleaseAttributeContext(IndexRootCtx);
 
         DPRINT("IndexRecordSize: %x IndexBlockSize: %x\n", Vcb->NtfsInfo.BytesPerIndexRecord, IndexRoot->SizeOfEntry);
@@ -566,6 +566,14 @@ NtfsFindMftRecord(PDEVICE_EXTENSION Vcb,
         while (IndexEntry < IndexEntryEnd &&
                !(IndexEntry->Flags & NTFS_INDEX_ENTRY_END))
         {
+            UNICODE_STRING EntryName;
+            EntryName.Buffer = IndexEntry->FileName.Name;
+            EntryName.Length = 
+            EntryName.MaximumLength = IndexEntry->FileName.NameLength * sizeof(WCHAR);
+
+            if (IndexEntry->Flags & NTFS_INDEX_ENTRY_NODE)
+                DPRINT1("Warning: sub-node browsing unimplemented! (%wZ)\n", &EntryName);
+
             if ((IndexEntry->Data.Directory.IndexedFile & NTFS_MFT_MASK) > 0x10 &&
                 CurrentEntry >= *FirstEntry &&
                 CompareFileName(FileName, IndexEntry, DirSearch))
@@ -657,6 +665,14 @@ NtfsFindMftRecord(PDEVICE_EXTENSION Vcb,
                 while (IndexEntry < IndexEntryEnd &&
                        !(IndexEntry->Flags & NTFS_INDEX_ENTRY_END))
                 {
+                    UNICODE_STRING EntryName;
+                    EntryName.Buffer = IndexEntry->FileName.Name;
+                    EntryName.Length = 
+                    EntryName.MaximumLength = IndexEntry->FileName.NameLength * sizeof(WCHAR);
+
+                    if (IndexEntry->Flags & NTFS_INDEX_ENTRY_NODE)
+                        DPRINT1("Warning: sub-node browsing unimplemented! (%wZ)\n", &EntryName);
+
                     if ((IndexEntry->Data.Directory.IndexedFile & NTFS_MFT_MASK) > 0x10 &&
                         CurrentEntry >= *FirstEntry &&
                         CompareFileName(FileName, IndexEntry, DirSearch))