Sebastian Lackner : ntoskrnl.exe: Defer deallocation of in_buff in dispatch_ioctl.
Module: wine Branch: master Commit: 5789b94f197894c314604b6dc31ce153d1526b73 URL: http://source.winehq.org/git/wine.git/?a=commit;h=5789b94f197894c314604b6dc3... Author: Sebastian Lackner <sebastian(a)fds-team.de> Date: Sun Oct 16 08:48:55 2016 +0200 ntoskrnl.exe: Defer deallocation of in_buff in dispatch_ioctl. Signed-off-by: Sebastian Lackner <sebastian(a)fds-team.de> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntoskrnl.exe/ntoskrnl.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index 428e700..3c18ee6 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -417,6 +417,7 @@ static NTSTATUS dispatch_ioctl( const irp_params_t *params, void *in_buff, ULONG { IRP *irp; void *out_buff = NULL; + void *to_free = NULL; DEVICE_OBJECT *device; FILE_OBJECT *file = wine_server_get_ptr( params->ioctl.file ); @@ -435,7 +436,7 @@ static NTSTATUS dispatch_ioctl( const irp_params_t *params, void *in_buff, ULONG if ((params->ioctl.code & 3) == METHOD_BUFFERED) { memcpy( out_buff, in_buff, in_size ); - HeapFree( GetProcessHeap(), 0, in_buff ); + to_free = in_buff; in_buff = out_buff; } } @@ -455,6 +456,7 @@ static NTSTATUS dispatch_ioctl( const irp_params_t *params, void *in_buff, ULONG irp->Flags |= IRP_DEALLOCATE_BUFFER; /* deallocate in_buff */ dispatch_irp( device, irp, irp_handle ); + HeapFree( GetProcessHeap(), 0, to_free ); return STATUS_SUCCESS; }
participants (1)
-
Alexandre Julliard