Close thread handle returned from CreateRemoteThreadEx
JohnLaTwC opened this issue · 1 comments
JohnLaTwC commented
These handles will be closed anyway at process exit, but...
TaskManagerBitmap/TaskManagerBitmap.cpp
Line 145 in fed7442
+ HANDLE hThread = NULL;
...
for( cpu = 0; cpu < sizeof( numaRelationship->GroupMask.Mask ) * 8; cpu++ ) {
if( (1ULL << cpu) & numaRelationship->GroupMask.Mask ) {
InitializeProcThreadAttributeList( NULL, 1, 0, &attrListSize );
attrList = (LPPROC_THREAD_ATTRIBUTE_LIST)malloc( attrListSize );
InitializeProcThreadAttributeList( attrList, 1, 0, &attrListSize );
memset( &groupAffinity, 0, sizeof( groupAffinity ) );
groupAffinity.Group = numaRelationship->GroupMask.Group;
groupAffinity.Mask = (KAFFINITY)1 << cpu;
UpdateProcThreadAttribute( attrList, 0, PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY,
&groupAffinity, sizeof( groupAffinity ), NULL, NULL );
- CreateRemoteThreadEx( GetCurrentProcess(), 0, 0, PixelCpuThread, (PVOID)(DWORD_PTR) cpuNumber,
+ hThread = CreateRemoteThreadEx( GetCurrentProcess(), 0, 0, PixelCpuThread, (PVOID)(DWORD_PTR) cpuNumber,
0, attrList, NULL );
+ if (hThread)
+ {
+ CloseHandle (hThread);
+ hThread = NULL;
+ }
DeleteProcThreadAttributeList( attrList );
free( attrList );
cpuNumber++;