From 60b7bdf7c84770b34bf8d6e46f4df90050ed62f9 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 27 Mar 2016 09:33:22 +0000 Subject: [PATCH] [NTFS] Fix invalid read for data shared over two sectors Patch by Trevor Thompson CORE-10998 svn path=/trunk/; revision=71060 --- reactos/drivers/filesystems/ntfs/rw.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/reactos/drivers/filesystems/ntfs/rw.c b/reactos/drivers/filesystems/ntfs/rw.c index 13e9d86595e..e74d5a6b64f 100644 --- a/reactos/drivers/filesystems/ntfs/rw.c +++ b/reactos/drivers/filesystems/ntfs/rw.c @@ -145,8 +145,12 @@ NtfsReadFile(PDEVICE_EXTENSION DeviceExt, { RealReadOffset = ROUND_DOWN(ReadOffset, DeviceExt->NtfsInfo.BytesPerSector); RealLength = ROUND_UP(ToRead, DeviceExt->NtfsInfo.BytesPerSector); + /* do we need to extend RealLength by one sector? */ + if (RealLength + RealReadOffset < ReadOffset + Length) + RealLength += DeviceExt->NtfsInfo.BytesPerSector; - ReadBuffer = ExAllocatePoolWithTag(NonPagedPool, RealLength + DeviceExt->NtfsInfo.BytesPerSector, TAG_NTFS); + + ReadBuffer = ExAllocatePoolWithTag(NonPagedPool, RealLength + (DeviceExt->NtfsInfo.BytesPerSector * 2), TAG_NTFS); if (ReadBuffer == NULL) { DPRINT1("Not enough memory!\n");