diff --git a/client/common/file.c b/client/common/file.c index 593a2217b..b2f896ae3 100644 --- a/client/common/file.c +++ b/client/common/file.c @@ -2590,7 +2590,8 @@ const char* freerdp_client_rdp_file_get_string_option(const rdpFile* file, const LPSTR* value = NULL; rdpFileLine* line = NULL; - if (freerdp_client_rdp_file_find_string_entry((rdpFile*)file, name, &value, &line)) + rdpFile* wfile = WINPR_CAST_CONST_PTR_AWAY(file, rdpFile*); + if (freerdp_client_rdp_file_find_string_entry(wfile, name, &value, &line)) { if (value && ~(size_t)(*value)) return *value; @@ -2611,7 +2612,8 @@ int freerdp_client_rdp_file_get_integer_option(const rdpFile* file, const char* DWORD* value = NULL; rdpFileLine* line = NULL; - if (freerdp_client_rdp_file_find_integer_entry((rdpFile*)file, name, &value, &line)) + rdpFile* wfile = WINPR_CAST_CONST_PTR_AWAY(file, rdpFile*); + if (freerdp_client_rdp_file_find_integer_entry(wfile, name, &value, &line)) { if (value && ~(*value)) return *value; diff --git a/libfreerdp/codec/dsp_ffmpeg.c b/libfreerdp/codec/dsp_ffmpeg.c index c48383048..1638c5883 100644 --- a/libfreerdp/codec/dsp_ffmpeg.c +++ b/libfreerdp/codec/dsp_ffmpeg.c @@ -860,7 +860,7 @@ BOOL freerdp_dsp_ffmpeg_decode(FREERDP_DSP_CONTEXT* WINPR_RESTRICT context, #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(58, 133, 100) av_init_packet(context->packet); #endif - context->packet->data = (uint8_t*)data; + context->packet->data = WINPR_CAST_CONST_PTR_AWAY(data, uint8_t*); WINPR_ASSERT(length <= INT_MAX); context->packet->size = (int)length; diff --git a/libfreerdp/codec/rfx.c b/libfreerdp/codec/rfx.c index e57161ff3..536f684e3 100644 --- a/libfreerdp/codec/rfx.c +++ b/libfreerdp/codec/rfx.c @@ -1385,7 +1385,14 @@ const RFX_TILE** rfx_message_get_tiles(const RFX_MESSAGE* WINPR_RESTRICT message WINPR_ASSERT(message); if (numTiles) *numTiles = message->numTiles; - return (const RFX_TILE**)message->tiles; + + union + { + RFX_TILE** pp; + const RFX_TILE** ppc; + } cnv; + cnv.pp = message->tiles; + return cnv.ppc; } UINT16 rfx_message_get_tile_count(const RFX_MESSAGE* WINPR_RESTRICT message) diff --git a/libfreerdp/core/childsession.c b/libfreerdp/core/childsession.c index 07acca864..cb863c36a 100644 --- a/libfreerdp/core/childsession.c +++ b/libfreerdp/core/childsession.c @@ -486,7 +486,7 @@ static BOOL createChildSessionTransport(HANDLE* pFile) } const BYTE startOfPath[] = { '\\', 0, '\\', 0, '.', 0, '\\', 0 }; - if (_wcsncmp(pipePath, (WCHAR*)startOfPath, 4)) + if (_wcsncmp(pipePath, (const WCHAR*)startOfPath, 4)) { /* when compiled under 32 bits, the path may miss "\\.\" at the beginning of the string * so add it if it's not there diff --git a/libfreerdp/crypto/tls.c b/libfreerdp/crypto/tls.c index 9c89ca26b..d4a1d815f 100644 --- a/libfreerdp/crypto/tls.c +++ b/libfreerdp/crypto/tls.c @@ -901,7 +901,8 @@ TlsHandshakeResult freerdp_tls_connect_ex(rdpTls* tls, BIO* underlying, const SS return 0; #if !defined(OPENSSL_NO_TLSEXT) && !defined(LIBRESSL_VERSION_NUMBER) - SSL_set_tlsext_host_name(tls->ssl, tls_get_server_name(tls)); + const char* str = tls_get_server_name(tls); + SSL_set_tlsext_host_name(tls->ssl, WINPR_CAST_CONST_PTR_AWAY(str, void*)); #endif return freerdp_tls_handshake(tls); diff --git a/libfreerdp/crypto/x509_utils.c b/libfreerdp/crypto/x509_utils.c index 355fd6ec4..f362e06bb 100644 --- a/libfreerdp/crypto/x509_utils.c +++ b/libfreerdp/crypto/x509_utils.c @@ -639,7 +639,8 @@ static BYTE* x509_utils_get_pem(const X509* xcert, const STACK_OF(X509) * chain, return NULL; } - status = PEM_write_bio_X509(bio, (X509*)xcert); + X509* wcert = WINPR_CAST_CONST_PTR_AWAY(xcert, X509*); + status = PEM_write_bio_X509(bio, wcert); if (status < 0) { diff --git a/winpr/libwinpr/crt/string.c b/winpr/libwinpr/crt/string.c index d832bc066..4f93a37dc 100644 --- a/winpr/libwinpr/crt/string.c +++ b/winpr/libwinpr/crt/string.c @@ -343,13 +343,13 @@ WCHAR* _wcsstr(const WCHAR* str, const WCHAR* strSearch) WINPR_ASSERT(strSearch); if (strSearch[0] == '\0') - return (WCHAR*)str; + return WINPR_CAST_CONST_PTR_AWAY(str, WCHAR*); const size_t searchLen = _wcslen(strSearch); while (*str) { if (_wcsncmp(str, strSearch, searchLen) == 0) - return (WCHAR*)str; + return WINPR_CAST_CONST_PTR_AWAY(str, WCHAR*); str++; } return NULL; diff --git a/winpr/libwinpr/utils/wlog/Layout.c b/winpr/libwinpr/utils/wlog/Layout.c index d9bf8ae5e..a34c7e4dd 100644 --- a/winpr/libwinpr/utils/wlog/Layout.c +++ b/winpr/libwinpr/utils/wlog/Layout.c @@ -242,14 +242,16 @@ BOOL WLog_Layout_GetMessagePrefix(wLog* log, wLogLayout* layout, wLogMessage* me &recurse }, /* day of week */ { ENTRY("%dy"), ENTRY("%u"), NULL, (void*)(size_t)localTime.wDay, NULL, &recurse }, /* day of year */ - { ENTRY("%fl"), ENTRY("%s"), NULL, (void*)message->FileName, NULL, &recurse }, /* file */ - { ENTRY("%fn"), ENTRY("%s"), NULL, (void*)message->FunctionName, NULL, - &recurse }, /* function */ + { ENTRY("%fl"), ENTRY("%s"), NULL, WINPR_CAST_CONST_PTR_AWAY(message->FileName, void*), + NULL, &recurse }, /* file */ + { ENTRY("%fn"), ENTRY("%s"), NULL, WINPR_CAST_CONST_PTR_AWAY(message->FunctionName, void*), + NULL, &recurse }, /* function */ { ENTRY("%hr"), ENTRY("%02u"), NULL, (void*)(size_t)localTime.wHour, NULL, &recurse }, /* hours */ { ENTRY("%ln"), ENTRY("%" PRIuz), NULL, (void*)message->LineNumber, NULL, &recurse }, /* line number */ - { ENTRY("%lv"), ENTRY("%s"), NULL, (void*)WLOG_LEVELS[message->Level], NULL, + { ENTRY("%lv"), ENTRY("%s"), NULL, + WINPR_CAST_CONST_PTR_AWAY(WLOG_LEVELS[message->Level], void*), NULL, &recurse }, /* log level */ { ENTRY("%mi"), ENTRY("%02u"), NULL, (void*)(size_t)localTime.wMinute, NULL, &recurse }, /* minutes */