[MOUNTMGR] Fix QueryPointsFromSymbolicLinkName and make it working

Select the current stack location for output buffer
And set output size so that buffer gets properly copied to caller
This commit is contained in:
Pierre Schweitzer 2019-09-06 08:28:36 +02:00
parent 16ec2e2aa5
commit 26a31b160a
No known key found for this signature in database
GPG key ID: 7545556C3D585B0B

View file

@ -518,7 +518,7 @@ QueryPointsFromSymbolicLinkName(IN PDEVICE_EXTENSION DeviceExtension,
}
/* Get output buffer */
Stack = IoGetNextIrpStackLocation(Irp);
Stack = IoGetCurrentIrpStackLocation(Irp);
MountPoints = (PMOUNTMGR_MOUNT_POINTS)Irp->AssociatedIrp.SystemBuffer;
/* Compute output length */
@ -528,9 +528,12 @@ QueryPointsFromSymbolicLinkName(IN PDEVICE_EXTENSION DeviceExtension,
/* Give length to allow reallocation */
MountPoints->Size = sizeof(MOUNTMGR_MOUNT_POINTS) + TotalLength;
MountPoints->NumberOfMountPoints = 1;
Irp->IoStatus.Information = sizeof(MOUNTMGR_MOUNT_POINTS) + TotalLength;
if (MountPoints->Size > Stack->Parameters.DeviceIoControl.OutputBufferLength)
{
Irp->IoStatus.Information = sizeof(MOUNTMGR_MOUNT_POINTS);
return STATUS_BUFFER_OVERFLOW;
}