Author: pschweitzer Date: Sun Jun 4 16:59:25 2017 New Revision: 74914 URL: http://svn.reactos.org/svn/reactos?rev=74914&view=rev Log: [UDFS] Fix broken implementation of UDFGetFullNameInformation(). Always return full name length so that caller can allocate a big-enough buffer for later call.
CORE-4375 Modified: trunk/reactos/drivers/filesystems/udfs/fileinfo.cpp Modified: trunk/reactos/drivers/filesystems/udfs/fileinfo.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/udfs/fileinfo.cpp?rev=74914&r1=74913&r2=74914&view=diff ============================================================================== --- trunk/reactos/drivers/filesystems/udfs/fileinfo.cpp [iso-8859-1] (original) +++ trunk/reactos/drivers/filesystems/udfs/fileinfo.cpp [iso-8859-1] Sun Jun 4 16:59:25 2017 @@ -831,20 +831,22 @@ IN OUT PLONG PtrReturnedLength ) { + ULONG BytesToCopy; NTSTATUS RC = STATUS_SUCCESS; AdPrint(("UDFGetFullNameInformation\n")); PtrBuffer->FileNameLength = FileObject->FileName.Length; + BytesToCopy = FileObject->FileName.Length; if (PtrBuffer->FileNameLength + sizeof( ULONG ) > (ULONG)(*PtrReturnedLength)) { - PtrBuffer->FileNameLength = *PtrReturnedLength - sizeof( ULONG ); + BytesToCopy = *PtrReturnedLength - sizeof( ULONG ); 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;