mirror of
https://github.com/reactos/reactos.git
synced 2025-06-10 20:34:59 +00:00
[UMPNPMGR] Use HeapReAlloc() to reallocate the PnP events buffer. Fix a memory leak in DeviceInstallThread().
This commit is contained in:
parent
9e18da43fe
commit
2955ed91ab
1 changed files with 12 additions and 7 deletions
|
@ -3476,6 +3476,7 @@ DeviceInstallThread(LPVOID lpParameter)
|
||||||
ResetEvent(hNoPendingInstalls);
|
ResetEvent(hNoPendingInstalls);
|
||||||
Params = CONTAINING_RECORD(ListEntry, DeviceInstallParams, ListEntry);
|
Params = CONTAINING_RECORD(ListEntry, DeviceInstallParams, ListEntry);
|
||||||
InstallDevice(Params->DeviceIds, showWizard);
|
InstallDevice(Params->DeviceIds, showWizard);
|
||||||
|
HeapFree(GetProcessHeap(), 0, Params);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3486,10 +3487,11 @@ DeviceInstallThread(LPVOID lpParameter)
|
||||||
static DWORD WINAPI
|
static DWORD WINAPI
|
||||||
PnpEventThread(LPVOID lpParameter)
|
PnpEventThread(LPVOID lpParameter)
|
||||||
{
|
{
|
||||||
PPLUGPLAY_EVENT_BLOCK PnpEvent;
|
DWORD dwRet = ERROR_SUCCESS;
|
||||||
ULONG PnpEventSize;
|
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
RPC_STATUS RpcStatus;
|
RPC_STATUS RpcStatus;
|
||||||
|
PPLUGPLAY_EVENT_BLOCK PnpEvent, NewPnpEvent;
|
||||||
|
ULONG PnpEventSize;
|
||||||
|
|
||||||
UNREFERENCED_PARAMETER(lpParameter);
|
UNREFERENCED_PARAMETER(lpParameter);
|
||||||
|
|
||||||
|
@ -3509,10 +3511,13 @@ PnpEventThread(LPVOID lpParameter)
|
||||||
if (Status == STATUS_BUFFER_TOO_SMALL)
|
if (Status == STATUS_BUFFER_TOO_SMALL)
|
||||||
{
|
{
|
||||||
PnpEventSize += 0x400;
|
PnpEventSize += 0x400;
|
||||||
HeapFree(GetProcessHeap(), 0, PnpEvent);
|
NewPnpEvent = HeapReAlloc(GetProcessHeap(), 0, PnpEvent, PnpEventSize);
|
||||||
PnpEvent = HeapAlloc(GetProcessHeap(), 0, PnpEventSize);
|
if (NewPnpEvent == NULL)
|
||||||
if (PnpEvent == NULL)
|
{
|
||||||
return ERROR_OUTOFMEMORY;
|
dwRet = ERROR_OUTOFMEMORY;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
PnpEvent = NewPnpEvent;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3619,7 +3624,7 @@ PnpEventThread(LPVOID lpParameter)
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, PnpEvent);
|
HeapFree(GetProcessHeap(), 0, PnpEvent);
|
||||||
|
|
||||||
return ERROR_SUCCESS;
|
return dwRet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue