diff --git a/winpr/libwinpr/file/file.c b/winpr/libwinpr/file/file.c index 5f646c53e..ee11bafbb 100644 --- a/winpr/libwinpr/file/file.c +++ b/winpr/libwinpr/file/file.c @@ -811,6 +811,8 @@ char* GetNamedPipeUnixDomainSocketBaseFilePathA() char* lpTempPath; char* lpPipePath; lpTempPath = GetKnownPath(KNOWN_PATH_TEMP); + if (!lpTempPath) + return NULL; lpPipePath = GetCombinedPath(lpTempPath, ".pipe"); free(lpTempPath); return lpPipePath; diff --git a/winpr/libwinpr/io/device.c b/winpr/libwinpr/io/device.c index 15ef9d22a..6e26ccaf7 100644 --- a/winpr/libwinpr/io/device.c +++ b/winpr/libwinpr/io/device.c @@ -84,6 +84,8 @@ char* GetDeviceFileUnixDomainSocketBaseFilePathA() char* lpPipePath; lpTempPath = GetKnownPath(KNOWN_PATH_TEMP); + if (!lpTempPath) + return NULL; lpPipePath = GetCombinedPath(lpTempPath, ".device"); free(lpTempPath); diff --git a/winpr/libwinpr/path/shell.c b/winpr/libwinpr/path/shell.c index f586619f3..d825c44fb 100644 --- a/winpr/libwinpr/path/shell.c +++ b/winpr/libwinpr/path/shell.c @@ -115,8 +115,15 @@ char* GetPath_XDG_DATA_HOME() return path; home = GetPath_HOME(); + if (!home) + return NULL; path = (char*) malloc(strlen(home) + strlen("/.local/share") + 1); + if (!path) + { + free(home); + return NULL; + } sprintf(path, "%s%s", home, "/.local/share"); free(home); @@ -147,6 +154,9 @@ char* GetPath_XDG_CONFIG_HOME() if (!home) home = GetPath_TEMP(); + if (!home) + return NULL; + path = (char*) malloc(strlen(home) + strlen("/.config") + 1); if (!path) { diff --git a/winpr/libwinpr/thread/thread.c b/winpr/libwinpr/thread/thread.c index 53d17d2e1..dc355bf60 100644 --- a/winpr/libwinpr/thread/thread.c +++ b/winpr/libwinpr/thread/thread.c @@ -380,7 +380,10 @@ HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize if(pthread_mutex_init(&thread->mutex, 0) != 0) { WLog_ERR(TAG, "failed to initialize thread mutex"); - close(thread->pipe_fd[0]); + if (thread->pipe_fd[0]) + close(thread->pipe_fd[0]); + if (thread->pipe_fd[1]) + close(thread->pipe_fd[1]); free(thread); return NULL; } @@ -394,7 +397,10 @@ HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize if (!thread_list) { WLog_ERR(TAG, "Couldn't create global thread list"); - close(thread->pipe_fd[0]); + if (thread->pipe_fd[0]) + close(thread->pipe_fd[0]); + if (thread->pipe_fd[1]) + close(thread->pipe_fd[1]); free(thread); return NULL; } diff --git a/winpr/libwinpr/utils/collections/PubSub.c b/winpr/libwinpr/utils/collections/PubSub.c index 16a57d5e9..e2f2b9314 100644 --- a/winpr/libwinpr/utils/collections/PubSub.c +++ b/winpr/libwinpr/utils/collections/PubSub.c @@ -207,19 +207,18 @@ wPubSub* PubSub_New(BOOL synchronized) if (!pubSub) return NULL; - pubSub->synchronized = synchronized; + pubSub->synchronized = synchronized; - if (pubSub->synchronized) - if (!InitializeCriticalSectionAndSpinCount(&pubSub->lock, 4000)) - { - free(pubSub); - return NULL; - } + if (pubSub->synchronized && !InitializeCriticalSectionAndSpinCount(&pubSub->lock, 4000)) + { + free(pubSub); + return NULL; + } - pubSub->count = 0; - pubSub->size = 64; + pubSub->count = 0; + pubSub->size = 64; - pubSub->events = (wEventType*) calloc(1, sizeof(wEventType) * pubSub->size); + pubSub->events = (wEventType*) calloc(1, sizeof(wEventType) * pubSub->size); if (!pubSub->events) { if (pubSub->synchronized) diff --git a/winpr/libwinpr/utils/wlog/wlog.c b/winpr/libwinpr/utils/wlog/wlog.c index 5bd0db5c0..69ca21306 100644 --- a/winpr/libwinpr/utils/wlog/wlog.c +++ b/winpr/libwinpr/utils/wlog/wlog.c @@ -525,7 +525,7 @@ wLog* WLog_New(LPCSTR name, wLog* rootLogger) log = (wLog*) calloc(1, sizeof(wLog)); if (!log) - return 0; + return NULL; log->Name = _strdup(name); @@ -730,7 +730,7 @@ void WLog_Uninit() { DWORD index; wLog* child = NULL; - wLog* root = WLog_GetRoot(); + wLog* root = g_RootLog; if (!root) return;