diff --git a/client/SDL/common/res/CMakeLists.txt b/client/SDL/common/res/CMakeLists.txt index f2f7fd8fe..44edf0553 100644 --- a/client/SDL/common/res/CMakeLists.txt +++ b/client/SDL/common/res/CMakeLists.txt @@ -79,7 +79,7 @@ if (SDL_USE_COMPILED_RESOURCES) if (WITH_SDL_IMAGE_DIALOGS) foreach(FILE ${RES_SVG_FILES}) - convert_to_bin("${FILE}" "images") + convert_to_bin("${FILE}" "images") endforeach() endif() @@ -125,7 +125,7 @@ endif() add_library(sdl-common-client-res STATIC ${RES_FILES} ${SRCS} - ${FACTORY_HDR} + ${FACTORY_HDR} ${FACTORY_SRCS} ) set_property(TARGET sdl-common-client-res PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/SDL/common/res/sdl_resource_manager.cpp b/client/SDL/common/res/sdl_resource_manager.cpp index 9fa160d27..44bf2247e 100644 --- a/client/SDL/common/res/sdl_resource_manager.cpp +++ b/client/SDL/common/res/sdl_resource_manager.cpp @@ -93,7 +93,9 @@ std::map>& SDLResourceManager::resources { static std::map> resources = {}; +#if defined(SDL_USE_COMPILED_RESOURCES) if (resources.empty()) init(); +#endif return resources; } diff --git a/client/SDL/common/res/sdl_resource_manager.hpp b/client/SDL/common/res/sdl_resource_manager.hpp index b120520d2..0dcb6ba6d 100644 --- a/client/SDL/common/res/sdl_resource_manager.hpp +++ b/client/SDL/common/res/sdl_resource_manager.hpp @@ -47,5 +47,7 @@ class SDLResourceManager private: static std::map>& resources(); +#if defined(SDL_USE_COMPILED_RESOURCES) static void init(); // implemented in generated file +#endif }; diff --git a/libfreerdp/codec/color.c b/libfreerdp/codec/color.c index 7f26ad9a7..59dc92a5f 100644 --- a/libfreerdp/codec/color.c +++ b/libfreerdp/codec/color.c @@ -593,6 +593,9 @@ BOOL freerdp_image_copy_no_overlap(BYTE* WINPR_RESTRICT pDstData, DWORD DstForma SSIZE_T dstVOffset = 0; SSIZE_T dstVMultiplier = 1; + if ((nWidth == 0) || (nHeight == 0)) + return TRUE; + if ((nHeight > INT32_MAX) || (nWidth > INT32_MAX)) return FALSE; @@ -711,6 +714,9 @@ BOOL freerdp_image_copy_overlap(BYTE* pDstData, DWORD DstFormat, UINT32 nDstStep SSIZE_T dstVOffset = 0; SSIZE_T dstVMultiplier = 1; + if ((nWidth == 0) || (nHeight == 0)) + return TRUE; + if ((nHeight > INT32_MAX) || (nWidth > INT32_MAX)) return FALSE; diff --git a/libfreerdp/crypto/tls.c b/libfreerdp/crypto/tls.c index 906e2501c..e89420e2a 100644 --- a/libfreerdp/crypto/tls.c +++ b/libfreerdp/crypto/tls.c @@ -902,6 +902,7 @@ static int bio_err_print(const char* str, size_t len, void* u) { wLog* log = u; WLog_Print(log, WLOG_ERROR, "[BIO_do_handshake] %s [%" PRIuz "]", str, len); + return 0; } TlsHandshakeResult freerdp_tls_handshake(rdpTls* tls)