[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
No known key found for this signature in database
GPG key ID: 7545556C3D585B0B

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 */