From c306a27941ab74941247a13155be5c6980f6cda3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sun, 19 Jan 2025 23:11:04 +0100 Subject: [PATCH] [MOUNTMGR] Fix the buffer returned by IOCTL_MOUNTMGR_QUERY_DOS_VOLUME_PATH (#6990) The buffer returned by MountMgrQueryDosVolumePath() should be a multi-string containing one single string. --- drivers/storage/mountmgr/device.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/storage/mountmgr/device.c b/drivers/storage/mountmgr/device.c index 22710b7b4d7..7000d4a4218 100644 --- a/drivers/storage/mountmgr/device.c +++ b/drivers/storage/mountmgr/device.c @@ -1004,8 +1004,8 @@ TryWithVolumeName: Output = (PMOUNTMGR_VOLUME_PATHS)Irp->AssociatedIrp.SystemBuffer; /* At least, we will return our length */ - Output->MultiSzLength = DeviceLength; - Irp->IoStatus.Information = FIELD_OFFSET(MOUNTMGR_VOLUME_PATHS, MultiSz) + DeviceLength; + Output->MultiSzLength = DeviceLength + 2 * sizeof(UNICODE_NULL); + Irp->IoStatus.Information = FIELD_OFFSET(MOUNTMGR_VOLUME_PATHS, MultiSz) + Output->MultiSzLength; /* If we have enough room for copying the string */ if (Irp->IoStatus.Information <= Stack->Parameters.DeviceIoControl.OutputBufferLength)