https://git.reactos.org/?p=reactos.git;a=commitdiff;h=8d91d4c8e1907ca50c3489e8f4868cf5827f1d5c

commit 8d91d4c8e1907ca50c3489e8f4868cf5827f1d5c
Author:     Hermès Bélusca-Maïto <hermes.belusca-ma...@reactos.org>
AuthorDate: Tue Jan 28 14:45:15 2025 +0100
Commit:     Hermès Bélusca-Maïto <hermes.belusca-ma...@reactos.org>
CommitDate: Tue Jan 28 15:29:40 2025 +0100

    [MOUNTMGR] MountMgrMountedDeviceArrival(): Fix pool buffer double-free.
    
    `DeviceInformation->DeviceName.Buffer` was already freed via the previous
      `FreePool(TargetDeviceName.Buffer);` call,
    since `DeviceInformation->DeviceName` was set to `TargetDeviceName` above
    in the code. This resulted in a pool double-free, triggering a corruption
    of the pool, and a BSoD.
    
    What had to be freed instead, is `DeviceInformation->SymbolicName.Buffer`
    that is allocated at the beginning of the function.
---
 drivers/storage/mountmgr/mountmgr.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/storage/mountmgr/mountmgr.c 
b/drivers/storage/mountmgr/mountmgr.c
index 4e1552791bc..6603df3f53b 100644
--- a/drivers/storage/mountmgr/mountmgr.c
+++ b/drivers/storage/mountmgr/mountmgr.c
@@ -995,7 +995,7 @@ MountMgrMountedDeviceArrival(IN PDEVICE_EXTENSION 
DeviceExtension,
 
         FreePool(UniqueId);
         FreePool(TargetDeviceName.Buffer);
-        FreePool(DeviceInformation->DeviceName.Buffer);
+        FreePool(DeviceInformation->SymbolicName.Buffer);
         FreePool(DeviceInformation);
 
         KeReleaseSemaphore(&(DeviceExtension->DeviceLock), IO_NO_INCREMENT, 1, 
FALSE);

Reply via email to