[winpr] mark all WINPR_ATTR_MALLOC also nodiscard

This commit is contained in:
akallabeth
2026-01-26 13:08:59 +01:00
parent 7990eec166
commit 1e4c1cd526
37 changed files with 128 additions and 4 deletions

View File

@@ -182,6 +182,7 @@ extern "C"
WINPR_API void BitStream_Free(wBitStream* bs);
WINPR_ATTR_MALLOC(BitStream_Free, 1)
WINPR_ATTR_NODISCARD
WINPR_API wBitStream* BitStream_New(void);
#ifdef __cplusplus

View File

@@ -166,16 +166,20 @@ extern "C"
WINPR_API void CommandLineParserFree(char** ptr);
WINPR_ATTR_MALLOC(CommandLineParserFree, 1)
WINPR_ATTR_NODISCARD
WINPR_API char** CommandLineParseCommaSeparatedValues(const char* list, size_t* count);
WINPR_ATTR_MALLOC(CommandLineParserFree, 1)
WINPR_ATTR_NODISCARD
WINPR_API char** CommandLineParseCommaSeparatedValuesEx(const char* name, const char* list,
size_t* count);
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
WINPR_API char* CommandLineToCommaSeparatedValues(int argc, char* argv[]);
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
WINPR_API char* CommandLineToCommaSeparatedValuesEx(int argc, char* argv[],
const char* filters[], size_t number);

View File

@@ -185,6 +185,7 @@ extern "C"
* @return A newly allocated queue or \b NULL in case of failure
*/
WINPR_ATTR_MALLOC(Queue_Free, 1)
WINPR_ATTR_NODISCARD
WINPR_API wQueue* Queue_New(BOOL synchronized, SSIZE_T capacity, SSIZE_T growthFactor);
/* System.Collections.Stack */
@@ -207,6 +208,7 @@ extern "C"
WINPR_API void Stack_Free(wStack* stack);
WINPR_ATTR_MALLOC(Stack_Free, 1)
WINPR_ATTR_NODISCARD
WINPR_API wStack* Stack_New(BOOL synchronized);
/* System.Collections.ArrayList */
@@ -254,6 +256,7 @@ extern "C"
WINPR_API void ArrayList_Free(wArrayList* arrayList);
WINPR_ATTR_MALLOC(ArrayList_Free, 1)
WINPR_ATTR_NODISCARD
WINPR_API wArrayList* ArrayList_New(BOOL synchronized);
/* System.Collections.DictionaryBase */
@@ -399,6 +402,7 @@ extern "C"
* @return A newly allocated dictionary or \b NULL in case of failure
*/
WINPR_ATTR_MALLOC(ListDictionary_Free, 1)
WINPR_ATTR_NODISCARD
WINPR_API wListDictionary* ListDictionary_New(BOOL synchronized);
/* System.Collections.Generic.LinkedList<T> */
@@ -526,6 +530,7 @@ extern "C"
* @return A pointer to the newly allocated linked list or \b NULL in case of failure
*/
WINPR_ATTR_MALLOC(LinkedList_Free, 1)
WINPR_ATTR_NODISCARD
WINPR_API wLinkedList* LinkedList_New(void);
/** @brief Return the \b wObject function pointers for list elements
@@ -612,6 +617,7 @@ extern "C"
* @return The newly allocated event or \b NULL in case of failure
*/
WINPR_ATTR_MALLOC(CountdownEvent_Free, 1)
WINPR_ATTR_NODISCARD
WINPR_API wCountdownEvent* CountdownEvent_New(size_t initialCount);
/* Hash Table */
@@ -651,6 +657,7 @@ extern "C"
WINPR_API void HashTable_Free(wHashTable* table);
WINPR_ATTR_MALLOC(HashTable_Free, 1)
WINPR_ATTR_NODISCARD
WINPR_API wHashTable* HashTable_New(BOOL synchronized);
WINPR_API void HashTable_Lock(wHashTable* table);
@@ -678,6 +685,7 @@ extern "C"
WINPR_API void BufferPool_Free(wBufferPool* pool);
WINPR_ATTR_MALLOC(BufferPool_Free, 1)
WINPR_ATTR_NODISCARD
WINPR_API wBufferPool* BufferPool_New(BOOL synchronized, SSIZE_T fixedSize, DWORD alignment);
/* ObjectPool */
@@ -693,6 +701,7 @@ extern "C"
WINPR_API void ObjectPool_Free(wObjectPool* pool);
WINPR_ATTR_MALLOC(ObjectPool_Free, 1)
WINPR_ATTR_NODISCARD
WINPR_API wObjectPool* ObjectPool_New(BOOL synchronized);
/* Message Queue */
@@ -766,6 +775,7 @@ extern "C"
* \return A pointer to a newly allocated MessageQueue or NULL.
*/
WINPR_ATTR_MALLOC(MessageQueue_Free, 1)
WINPR_ATTR_NODISCARD
WINPR_API wMessageQueue* MessageQueue_New(const wObject* callback);
/* Message Pipe */
@@ -781,6 +791,7 @@ extern "C"
WINPR_API void MessagePipe_Free(wMessagePipe* pipe);
WINPR_ATTR_MALLOC(MessagePipe_Free, 1)
WINPR_ATTR_NODISCARD
WINPR_API wMessagePipe* MessagePipe_New(void);
/* Publisher/Subscriber Pattern */
@@ -876,6 +887,7 @@ extern "C"
WINPR_API void PubSub_Free(wPubSub* pubSub);
WINPR_ATTR_MALLOC(PubSub_Free, 1)
WINPR_ATTR_NODISCARD
WINPR_API wPubSub* PubSub_New(BOOL synchronized);
#ifdef __cplusplus

View File

@@ -391,6 +391,7 @@ extern "C"
* RegisterHandleCreator().
*/
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CommCreateFileA(LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes,

View File

@@ -192,26 +192,33 @@ extern "C"
WINPR_API void winpr_aligned_free(void* memblock);
WINPR_ATTR_MALLOC(winpr_aligned_free, 1)
WINPR_ATTR_NODISCARD
WINPR_API void* winpr_aligned_malloc(size_t size, size_t alignment);
WINPR_ATTR_MALLOC(winpr_aligned_free, 1)
WINPR_ATTR_NODISCARD
WINPR_API void* winpr_aligned_calloc(size_t count, size_t size, size_t alignment);
WINPR_ATTR_MALLOC(winpr_aligned_free, 1)
WINPR_ATTR_NODISCARD
WINPR_API void* winpr_aligned_realloc(void* memblock, size_t size, size_t alignment);
WINPR_ATTR_MALLOC(winpr_aligned_free, 1)
WINPR_ATTR_NODISCARD
WINPR_API void* winpr_aligned_recalloc(void* memblock, size_t num, size_t size,
size_t alignment);
WINPR_ATTR_MALLOC(winpr_aligned_free, 1)
WINPR_ATTR_NODISCARD
WINPR_API void* winpr_aligned_offset_malloc(size_t size, size_t alignment, size_t offset);
WINPR_ATTR_MALLOC(winpr_aligned_free, 1)
WINPR_ATTR_NODISCARD
WINPR_API void* winpr_aligned_offset_realloc(void* memblock, size_t size, size_t alignment,
size_t offset);
WINPR_ATTR_MALLOC(winpr_aligned_free, 1)
WINPR_ATTR_NODISCARD
WINPR_API void* winpr_aligned_offset_recalloc(void* memblock, size_t num, size_t size,
size_t alignment, size_t offset);

View File

@@ -80,6 +80,7 @@ extern "C"
WINPR_API void winpr_HMAC_Free(WINPR_HMAC_CTX* ctx);
WINPR_ATTR_MALLOC(winpr_HMAC_Free, 1)
WINPR_ATTR_NODISCARD
WINPR_API WINPR_HMAC_CTX* winpr_HMAC_New(void);
WINPR_API BOOL winpr_HMAC_Init(WINPR_HMAC_CTX* ctx, WINPR_MD_TYPE md, const void* key,
size_t keylen);
@@ -107,6 +108,7 @@ extern "C"
WINPR_API void winpr_Digest_Free(WINPR_DIGEST_CTX* ctx);
WINPR_ATTR_MALLOC(winpr_Digest_Free, 1)
WINPR_ATTR_NODISCARD
WINPR_API WINPR_DIGEST_CTX* winpr_Digest_New(void);
WINPR_API BOOL winpr_Digest_Init_Allow_FIPS(WINPR_DIGEST_CTX* ctx, WINPR_MD_TYPE md);
WINPR_API BOOL winpr_Digest_Init(WINPR_DIGEST_CTX* ctx, WINPR_MD_TYPE md);
@@ -156,9 +158,11 @@ extern "C"
WINPR_API void winpr_RC4_Free(WINPR_RC4_CTX* ctx);
WINPR_ATTR_MALLOC(winpr_RC4_Free, 1)
WINPR_ATTR_NODISCARD
WINPR_API WINPR_RC4_CTX* winpr_RC4_New_Allow_FIPS(const void* key, size_t keylen);
WINPR_ATTR_MALLOC(winpr_RC4_Free, 1)
WINPR_ATTR_NODISCARD
WINPR_API WINPR_RC4_CTX* winpr_RC4_New(const void* key, size_t keylen);
WINPR_API BOOL winpr_RC4_Update(WINPR_RC4_CTX* ctx, size_t length, const void* input,
void* output);
@@ -267,10 +271,9 @@ extern "C"
#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
WINPR_DEPRECATED_VAR("[since 3.10.0] use winpr_Cipher_NewEx",
WINPR_ATTR_MALLOC(winpr_Cipher_Free, 1)
WINPR_API WINPR_CIPHER_CTX* winpr_Cipher_New(WINPR_CIPHER_TYPE cipher,
WINPR_CRYPTO_OPERATION op,
const void* key,
const void* iv));
WINPR_ATTR_NODISCARD WINPR_API WINPR_CIPHER_CTX* winpr_Cipher_New(
WINPR_CIPHER_TYPE cipher, WINPR_CRYPTO_OPERATION op,
const void* key, const void* iv));
#endif
/** @brief Create a new \b WINPR_CIPHER_CTX
@@ -290,6 +293,7 @@ extern "C"
* @since version 3.10.0
*/
WINPR_ATTR_MALLOC(winpr_Cipher_Free, 1)
WINPR_ATTR_NODISCARD
WINPR_API WINPR_CIPHER_CTX* winpr_Cipher_NewEx(WINPR_CIPHER_TYPE cipher,
WINPR_CRYPTO_OPERATION op, const void* key,
size_t keylen, const void* iv, size_t ivlen);

View File

@@ -36,9 +36,11 @@ extern "C"
WINPR_API void winpr_backtrace_free(void* buffer);
WINPR_ATTR_MALLOC(winpr_backtrace_free, 1)
WINPR_ATTR_NODISCARD
WINPR_API void* winpr_backtrace(DWORD size);
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
WINPR_API char** winpr_backtrace_symbols(void* buffer, size_t* used);
WINPR_API void winpr_backtrace_symbols_fd(void* buffer, int fd);

View File

@@ -91,9 +91,11 @@ extern "C"
WINPR_API BOOL FreeEnvironmentStringsW(LPWCH lpszEnvironmentBlock);
WINPR_ATTR_MALLOC(FreeEnvironmentStringsA, 1)
WINPR_ATTR_NODISCARD
WINPR_API LPCH GetEnvironmentStrings(VOID);
WINPR_ATTR_MALLOC(FreeEnvironmentStringsW, 1)
WINPR_ATTR_NODISCARD
WINPR_API LPWCH GetEnvironmentStringsW(VOID);
WINPR_API BOOL SetEnvironmentStringsA(LPCH NewEnvironment);
@@ -130,6 +132,7 @@ extern "C"
#endif
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
WINPR_API LPCH MergeEnvironmentStrings(PCSTR original, PCSTR merge);
WINPR_API DWORD GetEnvironmentVariableEBA(LPCSTR envBlock, LPCSTR lpName, LPSTR lpBuffer,
@@ -137,11 +140,13 @@ extern "C"
WINPR_API BOOL SetEnvironmentVariableEBA(LPSTR* envBlock, LPCSTR lpName, LPCSTR lpValue);
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
WINPR_API char** EnvironmentBlockToEnvpA(LPCH lpszEnvironmentBlock);
WINPR_API DWORD GetEnvironmentVariableX(const char* lpName, char* lpBuffer, DWORD nSize);
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
WINPR_API char* GetEnvAlloc(LPCSTR lpName);
#ifdef __cplusplus

View File

@@ -566,8 +566,17 @@ extern "C"
WINPR_API int UnixChangeFileMode(const char* filename, int flags);
WINPR_API BOOL IsNamedPipeFileNameA(LPCSTR lpName);
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
WINPR_API char* GetNamedPipeNameWithoutPrefixA(LPCSTR lpName);
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
WINPR_API char* GetNamedPipeUnixDomainSocketBaseFilePathA(void);
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
WINPR_API char* GetNamedPipeUnixDomainSocketFilePathA(LPCSTR lpName);
WINPR_API int GetNamePipeFileDescriptor(HANDLE hNamedPipe);

View File

@@ -137,12 +137,14 @@ extern "C"
* as deallocator
*/
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
WINPR_API void* winpr_image_write_buffer(wImage* image, UINT32 format, size_t* size);
WINPR_API int winpr_image_read_buffer(wImage* image, const BYTE* buffer, size_t size);
WINPR_API void winpr_image_free(wImage* image, BOOL bFreeBuffer);
WINPR_ATTR_MALLOC(winpr_image_free, 1)
WINPR_ATTR_NODISCARD
WINPR_API wImage* winpr_image_new(void);
/** @brief Check if a image format is supported

View File

@@ -140,6 +140,7 @@ extern "C"
* @return The newly allocated instance or \b NULL if failed.
*/
WINPR_ATTR_MALLOC(IniFile_Free, 1)
WINPR_ATTR_NODISCARD
WINPR_API wIniFile* IniFile_New(void);
/** @brief Clone a ini instance

View File

@@ -76,6 +76,7 @@ extern "C"
LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateIoCompletionPort(HANDLE FileHandle, HANDLE ExistingCompletionPort,
ULONG_PTR CompletionKey,
DWORD NumberOfConcurrentThreads);

View File

@@ -64,6 +64,7 @@ extern "C"
* @since version 3.6.0
*/
WINPR_ATTR_MALLOC(WINPR_JSON_Delete, 1)
WINPR_ATTR_NODISCARD
WINPR_API WINPR_JSON* WINPR_JSON_Parse(const char* value);
/**
@@ -75,6 +76,7 @@ extern "C"
* @since version 3.6.0
*/
WINPR_ATTR_MALLOC(WINPR_JSON_Delete, 1)
WINPR_ATTR_NODISCARD
WINPR_API WINPR_JSON* WINPR_JSON_ParseWithLength(const char* value, size_t buffer_length);
/**
@@ -85,6 +87,7 @@ extern "C"
* @since version 3.16.0
*/
WINPR_ATTR_MALLOC(WINPR_JSON_Delete, 1)
WINPR_ATTR_NODISCARD
WINPR_API WINPR_JSON* WINPR_JSON_ParseFromFile(const char* filename);
/**
@@ -95,6 +98,7 @@ extern "C"
* @since version 3.16.0
*/
WINPR_ATTR_MALLOC(WINPR_JSON_Delete, 1)
WINPR_ATTR_NODISCARD
WINPR_API WINPR_JSON* WINPR_JSON_ParseFromFileFP(FILE* fp);
/**
@@ -403,6 +407,7 @@ extern "C"
* @since version 3.6.0
*/
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
WINPR_API char* WINPR_JSON_Print(WINPR_JSON* item);
/**
@@ -414,6 +419,7 @@ extern "C"
* @since version 3.6.0
*/
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
WINPR_API char* WINPR_JSON_PrintUnformatted(WINPR_JSON* item);
#ifdef __cplusplus

View File

@@ -38,19 +38,23 @@ extern "C"
#endif
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateFileMappingA(HANDLE hFile, LPSECURITY_ATTRIBUTES lpAttributes,
DWORD flProtect, DWORD dwMaximumSizeHigh,
DWORD dwMaximumSizeLow, LPCSTR lpName);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateFileMappingW(HANDLE hFile, LPSECURITY_ATTRIBUTES lpAttributes,
DWORD flProtect, DWORD dwMaximumSizeHigh,
DWORD dwMaximumSizeLow, LPCWSTR lpName);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE OpenFileMappingA(DWORD dwDesiredAccess, BOOL bInheritHandle, LPCSTR lpName);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE OpenFileMappingW(DWORD dwDesiredAccess, BOOL bInheritHandle, LPCWSTR lpName);
WINPR_API LPVOID MapViewOfFile(HANDLE hFileMappingObject, DWORD dwDesiredAccess,

View File

@@ -323,23 +323,29 @@ extern "C"
* @since version 3.9.0
*/
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
WINPR_API char* winpr_GetConfigFilePath(BOOL system, const char* filename);
WINPR_API const char* GetKnownPathIdString(int id);
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
WINPR_API char* GetKnownPath(eKnownPathTypes id);
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
WINPR_API char* GetKnownSubPath(eKnownPathTypes id, const char* path);
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
WINPR_API char* GetEnvironmentPath(char* name);
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
WINPR_API char* GetEnvironmentSubPath(char* name, const char* path);
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
WINPR_API char* GetCombinedPath(const char* basePath, const char* subPath);
WINPR_API BOOL PathMakePathA(LPCSTR path, LPSECURITY_ATTRIBUTES lpAttributes);

View File

@@ -74,12 +74,14 @@ extern "C"
*/
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateNamedPipeA(LPCSTR lpName, DWORD dwOpenMode, DWORD dwPipeMode,
DWORD nMaxInstances, DWORD nOutBufferSize,
DWORD nInBufferSize, DWORD nDefaultTimeOut,
LPSECURITY_ATTRIBUTES lpSecurityAttributes);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateNamedPipeW(LPCWSTR lpName, DWORD dwOpenMode, DWORD dwPipeMode,
DWORD nMaxInstances, DWORD nOutBufferSize,
DWORD nInBufferSize, DWORD nDefaultTimeOut,

View File

@@ -41,6 +41,7 @@ extern "C"
size_t width);
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
WINPR_API char* winpr_BinToHexString(const BYTE* data, size_t length, BOOL space);
WINPR_API size_t winpr_BinToHexStringBuffer(const BYTE* data, size_t length, char* dstStr,
size_t dstSize, BOOL space);

View File

@@ -90,6 +90,7 @@ extern "C"
WINPR_API void Stream_Free(wStream* s, BOOL bFreeBuffer);
WINPR_ATTR_MALLOC(Stream_Free, 1)
WINPR_ATTR_NODISCARD
WINPR_API wStream* Stream_New(BYTE* buffer, size_t size);
WINPR_API wStream* Stream_StaticConstInit(wStream* s, const BYTE* buffer, size_t size);
WINPR_API wStream* Stream_StaticInit(wStream* s, BYTE* buffer, size_t size);
@@ -1385,6 +1386,7 @@ extern "C"
WINPR_API void Stream_Release(wStream* s);
WINPR_ATTR_MALLOC(Stream_Release, 1)
WINPR_ATTR_NODISCARD
WINPR_API wStream* StreamPool_Take(wStreamPool* pool, size_t size);
WINPR_API wStream* StreamPool_Find(wStreamPool* pool, const BYTE* ptr);
@@ -1416,6 +1418,7 @@ extern "C"
WINPR_API void StreamPool_Free(wStreamPool* pool);
WINPR_ATTR_MALLOC(StreamPool_Free, 1)
WINPR_ATTR_NODISCARD
WINPR_API wStreamPool* StreamPool_New(BOOL synchronized, size_t defaultSize);
WINPR_API char* StreamPool_GetStatistics(wStreamPool* pool, char* buffer, size_t size);

View File

@@ -432,6 +432,7 @@ extern "C"
#if !defined(WINPR_HAVE_STRNDUP)
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
WINPR_API char* strndup(const char* s, size_t n);
#endif
@@ -446,6 +447,7 @@ extern "C"
* @since version 3.10.0
*/
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
WINPR_API WCHAR* wcsndup(const WCHAR* s, size_t n);
#ifdef __cplusplus

View File

@@ -45,25 +45,31 @@ extern "C"
#define CREATE_MUTEX_INITIAL_OWNER 0x00000001
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateMutexA(LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner,
LPCSTR lpName);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateMutexW(LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner,
LPCWSTR lpName);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateMutexExA(LPSECURITY_ATTRIBUTES lpMutexAttributes, LPCSTR lpName,
DWORD dwFlags, DWORD dwDesiredAccess);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateMutexExW(LPSECURITY_ATTRIBUTES lpMutexAttributes, LPCWSTR lpName,
DWORD dwFlags, DWORD dwDesiredAccess);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE OpenMutexA(DWORD dwDesiredAccess, BOOL bInheritHandle, LPCSTR lpName);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE OpenMutexW(DWORD dwDesiredAccess, BOOL bInheritHandle, LPCWSTR lpName);
WINPR_API BOOL ReleaseMutex(HANDLE hMutex);
@@ -81,17 +87,21 @@ extern "C"
/* Semaphore */
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateSemaphoreA(LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,
LONG lInitialCount, LONG lMaximumCount, LPCSTR lpName);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateSemaphoreW(LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,
LONG lInitialCount, LONG lMaximumCount, LPCWSTR lpName);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE OpenSemaphoreA(DWORD dwDesiredAccess, BOOL bInheritHandle, LPCSTR lpName);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE OpenSemaphoreW(DWORD dwDesiredAccess, BOOL bInheritHandle, LPCWSTR lpName);
#ifdef UNICODE
@@ -109,25 +119,31 @@ extern "C"
#define CREATE_EVENT_INITIAL_SET 0x00000002
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateEventA(LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset,
BOOL bInitialState, LPCSTR lpName);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateEventW(LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset,
BOOL bInitialState, LPCWSTR lpName);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateEventExA(LPSECURITY_ATTRIBUTES lpEventAttributes, LPCSTR lpName,
DWORD dwFlags, DWORD dwDesiredAccess);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateEventExW(LPSECURITY_ATTRIBUTES lpEventAttributes, LPCWSTR lpName,
DWORD dwFlags, DWORD dwDesiredAccess);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE OpenEventA(DWORD dwDesiredAccess, BOOL bInheritHandle, LPCSTR lpName);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE OpenEventW(DWORD dwDesiredAccess, BOOL bInheritHandle, LPCWSTR lpName);
WINPR_API BOOL SetEvent(HANDLE hEvent);
@@ -250,19 +266,23 @@ extern "C"
DWORD dwTimerHighValue);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateWaitableTimerA(LPSECURITY_ATTRIBUTES lpTimerAttributes,
BOOL bManualReset, LPCSTR lpTimerName);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateWaitableTimerW(LPSECURITY_ATTRIBUTES lpTimerAttributes,
BOOL bManualReset, LPCWSTR lpTimerName);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateWaitableTimerExA(LPSECURITY_ATTRIBUTES lpTimerAttributes,
LPCSTR lpTimerName, DWORD dwFlags,
DWORD dwDesiredAccess);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateWaitableTimerExW(LPSECURITY_ATTRIBUTES lpTimerAttributes,
LPCWSTR lpTimerName, DWORD dwFlags,
DWORD dwDesiredAccess);
@@ -277,10 +297,12 @@ extern "C"
ULONG TolerableDelay);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE OpenWaitableTimerA(DWORD dwDesiredAccess, BOOL bInheritHandle,
LPCSTR lpTimerName);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE OpenWaitableTimerW(DWORD dwDesiredAccess, BOOL bInheritHandle,
LPCWSTR lpTimerName);
@@ -316,6 +338,7 @@ extern "C"
typedef VOID (*WAITORTIMERCALLBACK)(PVOID lpParameter, BOOLEAN TimerOrWaitFired);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateTimerQueue(void);
WINPR_API BOOL DeleteTimerQueue(HANDLE TimerQueue);
@@ -432,16 +455,19 @@ extern "C"
WINPR_API VOID USleep(DWORD dwMicroseconds);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateFileDescriptorEventW(LPSECURITY_ATTRIBUTES lpEventAttributes,
BOOL bManualReset, BOOL bInitialState,
int FileDescriptor, ULONG mode);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateFileDescriptorEventA(LPSECURITY_ATTRIBUTES lpEventAttributes,
BOOL bManualReset, BOOL bInitialState,
int FileDescriptor, ULONG mode);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateWaitObjectEvent(LPSECURITY_ATTRIBUTES lpEventAttributes,
BOOL bManualReset, BOOL bInitialState, void* pObject);

View File

@@ -232,11 +232,13 @@ extern "C"
#define STACK_SIZE_PARAM_IS_A_RESERVATION 0x00010000
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, size_t dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter,
DWORD dwCreationFlags, LPDWORD lpThreadId);
WINPR_ATTR_MALLOC(CloseHandle, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE CreateRemoteThread(HANDLE hProcess, LPSECURITY_ATTRIBUTES lpThreadAttributes,
size_t dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter, DWORD dwCreationFlags,

View File

@@ -41,6 +41,7 @@ extern "C"
WINPR_API void makecert_context_free(MAKECERT_CONTEXT* context);
WINPR_ATTR_MALLOC(makecert_context_free, 1)
WINPR_ATTR_NODISCARD
WINPR_API MAKECERT_CONTEXT* makecert_context_new(void);
#ifdef __cplusplus

View File

@@ -305,6 +305,7 @@ extern "C"
WINPR_API BOOL WSACloseEvent(HANDLE hEvent);
WINPR_ATTR_MALLOC(WSACloseEvent, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE WSACreateEvent(void);
WINPR_API BOOL WSASetEvent(HANDLE hEvent);
WINPR_API BOOL WSAResetEvent(HANDLE hEvent);

View File

@@ -1012,15 +1012,19 @@ extern "C"
WINPR_API VOID WINAPI WTSCloseServer(HANDLE hServer);
WINPR_ATTR_MALLOC(WTSCloseServer, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE WINAPI WTSOpenServerW(LPWSTR pServerName);
WINPR_ATTR_MALLOC(WTSCloseServer, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE WINAPI WTSOpenServerA(LPSTR pServerName);
WINPR_ATTR_MALLOC(WTSCloseServer, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE WINAPI WTSOpenServerExW(LPWSTR pServerName);
WINPR_ATTR_MALLOC(WTSCloseServer, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE WINAPI WTSOpenServerExA(LPSTR pServerName);
WINPR_API BOOL WINAPI WTSEnumerateSessionsW(HANDLE hServer, DWORD Reserved, DWORD Version,
@@ -1081,10 +1085,12 @@ extern "C"
WINPR_API BOOL WINAPI WTSVirtualChannelClose(HANDLE hChannelHandle);
WINPR_ATTR_MALLOC(WTSVirtualChannelClose, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE WINAPI WTSVirtualChannelOpen(HANDLE hServer, DWORD SessionId,
LPSTR pVirtualName);
WINPR_ATTR_MALLOC(WTSVirtualChannelClose, 1)
WINPR_ATTR_NODISCARD
WINPR_API HANDLE WINAPI WTSVirtualChannelOpenEx(DWORD SessionId, LPSTR pVirtualName,
DWORD flags);

View File

@@ -28,6 +28,7 @@ typedef struct winpr_int_rc4_ctx winpr_int_RC4_CTX;
void winpr_int_rc4_free(winpr_int_RC4_CTX* ctx);
WINPR_ATTR_MALLOC(winpr_int_rc4_free, 1)
WINPR_ATTR_NODISCARD
winpr_int_RC4_CTX* winpr_int_rc4_new(const BYTE* key, size_t keylength);
BOOL winpr_int_rc4_update(winpr_int_RC4_CTX* ctx, size_t length, const BYTE* input, BYTE* output);

View File

@@ -872,6 +872,7 @@ typedef struct
static const char file_search_magic[] = "file_srch_magic";
WINPR_ATTR_MALLOC(FindClose, 1)
WINPR_ATTR_NODISCARD
static WIN32_FILE_SEARCH* file_search_new(const char* name, size_t namelen, const char* pattern,
size_t patternlen)
{

View File

@@ -246,6 +246,7 @@ static BOOL isValidIP(const char* ipAddress)
#if defined(WITH_KRB5_MIT)
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
static char* get_realm_name(krb5_data realm, size_t* plen)
{
WINPR_ASSERT(plen);
@@ -260,6 +261,7 @@ static char* get_realm_name(krb5_data realm, size_t* plen)
}
#elif defined(WITH_KRB5_HEIMDAL)
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
static char* get_realm_name(Realm realm, size_t* plen)
{
WINPR_ASSERT(plen);

View File

@@ -47,6 +47,7 @@ SECURITY_STATUS schannel_openssl_decrypt_message(SCHANNEL_OPENSSL* context,
void schannel_openssl_free(SCHANNEL_OPENSSL* context);
WINPR_ATTR_MALLOC(schannel_openssl_free, 1)
WINPR_ATTR_NODISCARD
SCHANNEL_OPENSSL* schannel_openssl_new(void);
#endif /* WINPR_SSPI_SCHANNEL_OPENSSL_H */

View File

@@ -272,6 +272,7 @@ fail:
*/
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
static void* winpr_bitmap_write_buffer(const BYTE* data, WINPR_ATTR_UNUSED size_t size,
UINT32 width, UINT32 height, UINT32 stride, UINT32 bpp,
UINT32* pSize)

View File

@@ -33,9 +33,11 @@ extern "C"
void winpr_unwind_backtrace_free(void* buffer);
WINPR_ATTR_MALLOC(winpr_unwind_backtrace_free, 1)
WINPR_ATTR_NODISCARD
void* winpr_unwind_backtrace(DWORD size);
WINPR_ATTR_MALLOC(free, 1)
WINPR_ATTR_NODISCARD
char** winpr_unwind_backtrace_symbols(void* buffer, size_t* used);
#ifdef __cplusplus

View File

@@ -23,6 +23,7 @@
#include "wlog.h"
WINPR_ATTR_MALLOC(WLog_Appender_Free, 2)
WINPR_ATTR_NODISCARD
WINPR_LOCAL wLogAppender* WLog_BinaryAppender_New(wLog* log);
#endif /* WINPR_WLOG_BINARY_APPENDER_PRIVATE_H */

View File

@@ -23,6 +23,7 @@
#include "wlog.h"
WINPR_ATTR_MALLOC(WLog_Appender_Free, 2)
WINPR_ATTR_NODISCARD
WINPR_LOCAL wLogAppender* WLog_CallbackAppender_New(wLog* log);
#endif /* WINPR_WLOG_CALLBACK_APPENDER_PRIVATE_H */

View File

@@ -23,6 +23,7 @@
#include "wlog.h"
WINPR_ATTR_MALLOC(WLog_Appender_Free, 2)
WINPR_ATTR_NODISCARD
WINPR_LOCAL wLogAppender* WLog_ConsoleAppender_New(wLog* log);
#endif /* WINPR_WLOG_CONSOLE_APPENDER_PRIVATE_H */

View File

@@ -23,6 +23,7 @@
#include "wlog.h"
WINPR_ATTR_MALLOC(WLog_Appender_Free, 2)
WINPR_ATTR_NODISCARD
WINPR_LOCAL wLogAppender* WLog_FileAppender_New(wLog* log);
#endif /* WINPR_WLOG_FILE_APPENDER_PRIVATE_H */

View File

@@ -36,6 +36,7 @@ struct s_wLogLayout
WINPR_LOCAL void WLog_Layout_Free(wLog* log, wLogLayout* layout);
WINPR_ATTR_MALLOC(WLog_Layout_Free, 2)
WINPR_ATTR_NODISCARD
WINPR_LOCAL wLogLayout* WLog_Layout_New(wLog* log);
#endif /* WINPR_WLOG_LAYOUT_PRIVATE_H */

View File

@@ -27,6 +27,7 @@
#include "wlog.h"
WINPR_ATTR_MALLOC(WLog_Appender_Free, 2)
WINPR_ATTR_NODISCARD
WINPR_LOCAL wLogAppender* WLog_SyslogAppender_New(wLog* log);
#endif /* WINPR_LIBWINPR_UTILS_WLOG_SYSLOGAPPENDER_H_ */

View File

@@ -29,6 +29,7 @@
#include "wlog.h"
WINPR_ATTR_MALLOC(WLog_Appender_Free, 2)
WINPR_ATTR_NODISCARD
WINPR_LOCAL wLogAppender* WLog_UdpAppender_New(wLog* log);
#endif /* WINPR_LIBWINPR_UTILS_WLOG_UDPAPPENDER_H_ */