[NTOSKRNL] On read/write, also check buffer respects device alignment requirements

This commit is contained in:
Pierre Schweitzer
2018-10-04 07:56:23 +02:00
parent 1bd25c5c24
commit bf59669065
+16
View File
@@ -2621,6 +2621,14 @@ NtReadFile(IN HANDLE FileHandle,
return STATUS_INVALID_PARAMETER;
}
/* Fail if buffer doesn't match alignment requirements */
if (((ULONG_PTR)Buffer & DeviceObject->AlignmentRequirement) != 0)
{
/* Release the file object and and fail */
ObDereferenceObject(FileObject);
return STATUS_INVALID_PARAMETER;
}
if (ByteOffset)
{
/* Fail if ByteOffset is not sector size aligned */
@@ -3650,6 +3658,14 @@ NtWriteFile(IN HANDLE FileHandle,
return STATUS_INVALID_PARAMETER;
}
/* Fail if buffer doesn't match alignment requirements */
if (((ULONG_PTR)Buffer & DeviceObject->AlignmentRequirement) != 0)
{
/* Release the file object and and fail */
ObDereferenceObject(FileObject);
return STATUS_INVALID_PARAMETER;
}
if (ByteOffset)
{
/* Fail if ByteOffset is not sector size aligned */