Fix broken implementation of UDFGetFullNameInformation().
Always return full name length so that caller can allocate a big-enough buffer for later call.
CORE-4375
svn path=/trunk/; revision=74914
IN OUT PLONG PtrReturnedLength
)
{
IN OUT PLONG PtrReturnedLength
)
{
NTSTATUS RC = STATUS_SUCCESS;
AdPrint(("UDFGetFullNameInformation\n"));
PtrBuffer->FileNameLength = FileObject->FileName.Length;
NTSTATUS RC = STATUS_SUCCESS;
AdPrint(("UDFGetFullNameInformation\n"));
PtrBuffer->FileNameLength = FileObject->FileName.Length;
+ BytesToCopy = FileObject->FileName.Length;
if (PtrBuffer->FileNameLength + sizeof( ULONG ) > (ULONG)(*PtrReturnedLength)) {
if (PtrBuffer->FileNameLength + sizeof( ULONG ) > (ULONG)(*PtrReturnedLength)) {
- PtrBuffer->FileNameLength = *PtrReturnedLength - sizeof( ULONG );
+ BytesToCopy = *PtrReturnedLength - sizeof( ULONG );
RC = STATUS_BUFFER_OVERFLOW;
}
RC = STATUS_BUFFER_OVERFLOW;
}
- RtlCopyMemory( PtrBuffer->FileName, FileObject->FileName.Buffer, PtrBuffer->FileNameLength );
+ RtlCopyMemory( PtrBuffer->FileName, FileObject->FileName.Buffer, BytesToCopy );
// Reduce the available bytes by the amount stored into this buffer.
*PtrReturnedLength -= sizeof( ULONG ) + PtrBuffer->FileNameLength;
// Reduce the available bytes by the amount stored into this buffer.
*PtrReturnedLength -= sizeof( ULONG ) + PtrBuffer->FileNameLength;