NtfsMoonWalkID():
- Do not allow opening a file by ID if it's not in use any longer
- Do not attempt to create the full path, if an error occured during walk
svn path=/trunk/; revision=66265
break;
ASSERT(MftRecord->Ntfs.Type == NRH_FILE_TYPE);
break;
ASSERT(MftRecord->Ntfs.Type == NRH_FILE_TYPE);
+ if (!(MftRecord->Flags & FRH_IN_USE))
+ {
+ Status = STATUS_OBJECT_PATH_NOT_FOUND;
+ break;
+ }
FileName = GetBestFileNameFromRecord(MftRecord);
WritePosition -= FileName->NameLength;
FileName = GetBestFileNameFromRecord(MftRecord);
WritePosition -= FileName->NameLength;
ExFreePoolWithTag(MftRecord, TAG_NTFS);
ExFreePoolWithTag(MftRecord, TAG_NTFS);
+ if (!NT_SUCCESS(Status))
+ return Status;
+
OutPath->Length = (MAX_PATH - WritePosition - 1) * sizeof(WCHAR);
OutPath->MaximumLength = (MAX_PATH - WritePosition) * sizeof(WCHAR);
OutPath->Buffer = ExAllocatePoolWithTag(NonPagedPool, OutPath->MaximumLength, TAG_NTFS);
OutPath->Length = (MAX_PATH - WritePosition - 1) * sizeof(WCHAR);
OutPath->MaximumLength = (MAX_PATH - WritePosition) * sizeof(WCHAR);
OutPath->Buffer = ExAllocatePoolWithTag(NonPagedPool, OutPath->MaximumLength, TAG_NTFS);