windows library: Enhance Event function configuration, add tests (#1064)
This commit is contained in:
parent
e8a262a1f2
commit
30b9391461
|
@ -960,7 +960,11 @@
|
||||||
<alloc init="true">OpenFileMapping</alloc>
|
<alloc init="true">OpenFileMapping</alloc>
|
||||||
<alloc init="true">CreateNamedPipe</alloc>
|
<alloc init="true">CreateNamedPipe</alloc>
|
||||||
<alloc init="true">CreateEvent</alloc>
|
<alloc init="true">CreateEvent</alloc>
|
||||||
|
<alloc init="true">CreateEventA</alloc>
|
||||||
|
<alloc init="true">CreateEventW</alloc>
|
||||||
<alloc init="true">CreateEventEx</alloc>
|
<alloc init="true">CreateEventEx</alloc>
|
||||||
|
<alloc init="true">CreateEventExA</alloc>
|
||||||
|
<alloc init="true">CreateEventExW</alloc>
|
||||||
<alloc init="true">CreateMutex</alloc>
|
<alloc init="true">CreateMutex</alloc>
|
||||||
<alloc init="true">CreateMutexA</alloc>
|
<alloc init="true">CreateMutexA</alloc>
|
||||||
<alloc init="true">CreateMutexW</alloc>
|
<alloc init="true">CreateMutexW</alloc>
|
||||||
|
@ -976,6 +980,8 @@
|
||||||
<alloc init="true">CreateTimerQueue</alloc>
|
<alloc init="true">CreateTimerQueue</alloc>
|
||||||
<alloc init="true">CreateWaitableTimer</alloc>
|
<alloc init="true">CreateWaitableTimer</alloc>
|
||||||
<alloc init="true">OpenEvent</alloc>
|
<alloc init="true">OpenEvent</alloc>
|
||||||
|
<alloc init="true">OpenEventA</alloc>
|
||||||
|
<alloc init="true">OpenEventW</alloc>
|
||||||
<alloc init="true">OpenMutex</alloc>
|
<alloc init="true">OpenMutex</alloc>
|
||||||
<alloc init="true">OpenMutexA</alloc>
|
<alloc init="true">OpenMutexA</alloc>
|
||||||
<alloc init="true">OpenMutexW</alloc>
|
<alloc init="true">OpenMutexW</alloc>
|
||||||
|
@ -3752,7 +3758,7 @@ HFONT CreateFont(
|
||||||
_In_ BOOL bManualReset,
|
_In_ BOOL bManualReset,
|
||||||
_In_ BOOL bInitialState,
|
_In_ BOOL bInitialState,
|
||||||
_In_opt_ LPCTSTR lpName);-->
|
_In_opt_ LPCTSTR lpName);-->
|
||||||
<function name="CreateEvent">
|
<function name="CreateEvent,CreateEventA,CreateEventW">
|
||||||
<noreturn>false</noreturn>
|
<noreturn>false</noreturn>
|
||||||
<returnValue type="HANDLE"/>
|
<returnValue type="HANDLE"/>
|
||||||
<arg nr="1">
|
<arg nr="1">
|
||||||
|
@ -3775,7 +3781,7 @@ HFONT CreateFont(
|
||||||
_In_opt_ LPCTSTR lpName,
|
_In_opt_ LPCTSTR lpName,
|
||||||
_In_ DWORD dwFlags,
|
_In_ DWORD dwFlags,
|
||||||
_In_ DWORD dwDesiredAccess);-->
|
_In_ DWORD dwDesiredAccess);-->
|
||||||
<function name="CreateEventEx">
|
<function name="CreateEventEx,CreateEventExA,CreateEventExW">
|
||||||
<noreturn>false</noreturn>
|
<noreturn>false</noreturn>
|
||||||
<returnValue type="HANDLE"/>
|
<returnValue type="HANDLE"/>
|
||||||
<arg nr="1">
|
<arg nr="1">
|
||||||
|
@ -3799,7 +3805,7 @@ HFONT CreateFont(
|
||||||
_In_ DWORD dwDesiredAccess,
|
_In_ DWORD dwDesiredAccess,
|
||||||
_In_ BOOL bInheritHandle,
|
_In_ BOOL bInheritHandle,
|
||||||
_In_ LPCTSTR lpName);-->
|
_In_ LPCTSTR lpName);-->
|
||||||
<function name="OpenEvent">
|
<function name="OpenEvent,OpenEventA,OpenEventW">
|
||||||
<noreturn>false</noreturn>
|
<noreturn>false</noreturn>
|
||||||
<returnValue type="HANDLE"/>
|
<returnValue type="HANDLE"/>
|
||||||
<arg nr="1">
|
<arg nr="1">
|
||||||
|
|
|
@ -59,6 +59,25 @@ void validCode()
|
||||||
FreeLibrary(hModule);
|
FreeLibrary(hModule);
|
||||||
hModule = GetModuleHandle(NULL);
|
hModule = GetModuleHandle(NULL);
|
||||||
FreeLibrary(hModule);
|
FreeLibrary(hModule);
|
||||||
|
|
||||||
|
// Valid Event usage, no leaks, valid arguments
|
||||||
|
HANDLE event;
|
||||||
|
event = CreateEvent(NULL, FALSE, FALSE, NULL);
|
||||||
|
if (NULL != event) {
|
||||||
|
SetEvent(event);
|
||||||
|
CloseHandle(event);
|
||||||
|
}
|
||||||
|
event = OpenEvent(EVENT_ALL_ACCESS, FALSE, L"testevent");
|
||||||
|
if (NULL != event) {
|
||||||
|
PulseEvent(event);
|
||||||
|
SetEvent(event);
|
||||||
|
CloseHandle(event);
|
||||||
|
}
|
||||||
|
event = CreateEventEx(NULL, L"testevent3", CREATE_EVENT_INITIAL_SET, EVENT_MODIFY_STATE);
|
||||||
|
if (NULL != event) {
|
||||||
|
ResetEvent(event);
|
||||||
|
CloseHandle(event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void bufferAccessOutOfBounds()
|
void bufferAccessOutOfBounds()
|
||||||
|
@ -102,6 +121,17 @@ void nullPointer()
|
||||||
HMODULE * phModule = NULL;
|
HMODULE * phModule = NULL;
|
||||||
// cppcheck-suppress nullPointer
|
// cppcheck-suppress nullPointer
|
||||||
GetModuleHandleEx(0, NULL, phModule);
|
GetModuleHandleEx(0, NULL, phModule);
|
||||||
|
|
||||||
|
// cppcheck-suppress leakReturnValNotUsed
|
||||||
|
// cppcheck-suppress nullPointer
|
||||||
|
OpenEvent(EVENT_ALL_ACCESS, FALSE, NULL);
|
||||||
|
HANDLE hEvent = NULL;
|
||||||
|
// cppcheck-suppress nullPointer
|
||||||
|
PulseEvent(hEvent);
|
||||||
|
// cppcheck-suppress nullPointer
|
||||||
|
ResetEvent(hEvent);
|
||||||
|
// cppcheck-suppress nullPointer
|
||||||
|
SetEvent(hEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void resourceLeak_CreateSemaphoreA()
|
void resourceLeak_CreateSemaphoreA()
|
||||||
|
@ -162,6 +192,30 @@ void resourceLeak_LoadLibrary()
|
||||||
// cppcheck-suppress resourceLeak
|
// cppcheck-suppress resourceLeak
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void resourceLeak_CreateEvent()
|
||||||
|
{
|
||||||
|
HANDLE hEvent;
|
||||||
|
hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
|
||||||
|
SetEvent(hEvent);
|
||||||
|
// cppcheck-suppress resourceLeak
|
||||||
|
}
|
||||||
|
|
||||||
|
void resourceLeak_CreateEventExA()
|
||||||
|
{
|
||||||
|
HANDLE hEvent;
|
||||||
|
// cppcheck-suppress unreadVariable
|
||||||
|
hEvent = CreateEventExA(NULL, "test", CREATE_EVENT_INITIAL_SET, EVENT_MODIFY_STATE);
|
||||||
|
// cppcheck-suppress resourceLeak
|
||||||
|
}
|
||||||
|
|
||||||
|
void resourceLeak_OpenEventW()
|
||||||
|
{
|
||||||
|
HANDLE hEvent;
|
||||||
|
// cppcheck-suppress unreadVariable
|
||||||
|
hEvent = OpenEventW(EVENT_ALL_ACCESS, TRUE, L"testevent");
|
||||||
|
// cppcheck-suppress resourceLeak
|
||||||
|
}
|
||||||
|
|
||||||
void ignoredReturnValue()
|
void ignoredReturnValue()
|
||||||
{
|
{
|
||||||
// cppcheck-suppress leakReturnValNotUsed
|
// cppcheck-suppress leakReturnValNotUsed
|
||||||
|
@ -187,6 +241,13 @@ void ignoredReturnValue()
|
||||||
// cppcheck-suppress ignoredReturnValue
|
// cppcheck-suppress ignoredReturnValue
|
||||||
GetProcAddress(hInstLib, "name");
|
GetProcAddress(hInstLib, "name");
|
||||||
FreeLibrary(hInstLib);
|
FreeLibrary(hInstLib);
|
||||||
|
|
||||||
|
// cppcheck-suppress leakReturnValNotUsed
|
||||||
|
CreateEvent(NULL, FALSE, FALSE, NULL);
|
||||||
|
// cppcheck-suppress leakReturnValNotUsed
|
||||||
|
OpenEvent(EVENT_ALL_ACCESS, FALSE, L"testevent");
|
||||||
|
// cppcheck-suppress leakReturnValNotUsed
|
||||||
|
CreateEventEx(NULL, L"test", CREATE_EVENT_INITIAL_SET, EVENT_MODIFY_STATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void invalidFunctionArg()
|
void invalidFunctionArg()
|
||||||
|
@ -243,6 +304,16 @@ void uninitvar()
|
||||||
ReleaseMutex(hMutex);
|
ReleaseMutex(hMutex);
|
||||||
// cppcheck-suppress uninitvar
|
// cppcheck-suppress uninitvar
|
||||||
CloseHandle(hMutex);
|
CloseHandle(hMutex);
|
||||||
|
|
||||||
|
HANDLE hEvent;
|
||||||
|
// cppcheck-suppress uninitvar
|
||||||
|
PulseEvent(hEvent);
|
||||||
|
// cppcheck-suppress uninitvar
|
||||||
|
ResetEvent(hEvent);
|
||||||
|
// cppcheck-suppress uninitvar
|
||||||
|
SetEvent(hEvent);
|
||||||
|
// cppcheck-suppress uninitvar
|
||||||
|
CloseHandle(hEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void allocDealloc_GetModuleHandleEx()
|
void allocDealloc_GetModuleHandleEx()
|
||||||
|
|
Loading…
Reference in New Issue