From ba8cf8cf2158018fb7abbedb51ab245f369be813 Mon Sep 17 00:00:00 2001 From: akallabeth Date: Sun, 4 Feb 2024 11:11:29 +0100 Subject: [PATCH] [build] fix Wmismatched-deallocator warnings With custom malloc function attributes the fail path in the _New functions produces warnings due to allocator mismatches. Silence them. --- channels/ainput/server/ainput_main.c | 3 +++ channels/disp/server/disp_main.c | 3 +++ channels/location/server/location_main.c | 3 +++ channels/rdpdr/server/rdpdr_main.c | 3 +++ .../server/camera_device_enumerator_main.c | 3 +++ channels/rdpecam/server/camera_device_main.c | 3 +++ channels/rdpei/server/rdpei_main.c | 3 +++ channels/rdpemsc/server/mouse_cursor_main.c | 3 +++ channels/rdpgfx/server/rdpgfx_main.c | 3 +++ channels/rdpsnd/server/rdpsnd_main.c | 3 +++ channels/telemetry/server/telemetry_main.c | 3 +++ client/X11/xf_cliprdr.c | 3 +++ client/X11/xf_floatbar.c | 3 +++ client/common/client_cliprdr_file.c | 3 +++ client/common/file.c | 3 +++ include/freerdp/crypto/certificate_store.h | 2 +- libfreerdp/cache/bitmap.c | 16 ++++++++++- libfreerdp/cache/brush.c | 3 +++ libfreerdp/cache/cache.c | 9 +++++++ libfreerdp/cache/glyph.c | 3 +++ libfreerdp/cache/nine_grid.c | 3 +++ libfreerdp/cache/offscreen.c | 3 +++ libfreerdp/cache/palette.c | 3 +++ libfreerdp/codec/bulk.c | 3 +++ libfreerdp/codec/dsp_ffmpeg.c | 3 +++ libfreerdp/codec/h264.c | 3 +++ libfreerdp/common/assistance.c | 3 +++ libfreerdp/core/aad.c | 3 +++ libfreerdp/core/client.c | 3 +++ libfreerdp/core/gateway/http.c | 6 +++++ libfreerdp/core/gateway/rdg.c | 3 +++ libfreerdp/core/gateway/rpc.c | 3 +++ libfreerdp/core/gateway/rpc_client.c | 3 +++ libfreerdp/core/gateway/wst.c | 3 +++ libfreerdp/core/license.c | 3 +++ libfreerdp/core/nla.c | 5 ++-- libfreerdp/core/orders.c | 12 +++++++++ libfreerdp/core/rdp.c | 3 +++ libfreerdp/core/server.c | 3 +++ libfreerdp/core/transport.c | 3 +++ libfreerdp/core/update.c | 27 +++++++++++++++++++ libfreerdp/core/update.h | 17 ++++++++++++ libfreerdp/crypto/certificate_store.c | 3 +++ libfreerdp/crypto/privatekey.c | 3 +++ libfreerdp/emu/scard/smartcard_emulate.c | 3 +++ libfreerdp/utils/smartcard_call.c | 3 +++ server/proxy/pf_channel.c | 3 +++ server/proxy/pf_context.c | 3 +++ server/proxy/pf_server.c | 3 +++ server/shadow/shadow_capture.c | 3 +++ server/shadow/shadow_screen.c | 3 +++ winpr/include/winpr/platform.h | 5 ++++ winpr/libwinpr/crypto/cipher.c | 8 +++--- winpr/libwinpr/crypto/hash.c | 8 +++++- winpr/libwinpr/utils/collections/ArrayList.c | 3 +++ winpr/libwinpr/utils/collections/BufferPool.c | 3 +++ .../utils/collections/CountdownEvent.c | 3 +++ winpr/libwinpr/utils/collections/HashTable.c | 3 +++ .../libwinpr/utils/collections/MessageQueue.c | 3 +++ winpr/libwinpr/utils/collections/PubSub.c | 3 +++ winpr/libwinpr/utils/collections/Queue.c | 3 +++ winpr/libwinpr/utils/collections/Stack.c | 3 +++ winpr/libwinpr/utils/collections/StreamPool.c | 3 +++ winpr/libwinpr/utils/ini.c | 3 +++ 64 files changed, 266 insertions(+), 8 deletions(-) diff --git a/channels/ainput/server/ainput_main.c b/channels/ainput/server/ainput_main.c index 20200627d..73abf3b33 100644 --- a/channels/ainput/server/ainput_main.c +++ b/channels/ainput/server/ainput_main.c @@ -415,7 +415,10 @@ ainput_server_context* ainput_server_context_new(HANDLE vcm) goto fail; return &ainput->context; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC ainput_server_context_free(&ainput->context); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/channels/disp/server/disp_main.c b/channels/disp/server/disp_main.c index b9724cf10..eba310705 100644 --- a/channels/disp/server/disp_main.c +++ b/channels/disp/server/disp_main.c @@ -609,7 +609,10 @@ DispServerContext* disp_server_context_new(HANDLE vcm) priv->isReady = FALSE; return context; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC disp_server_context_free(context); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/channels/location/server/location_main.c b/channels/location/server/location_main.c index bbc526ba7..71a676657 100644 --- a/channels/location/server/location_main.c +++ b/channels/location/server/location_main.c @@ -613,7 +613,10 @@ LocationServerContext* location_server_context_new(HANDLE vcm) return &location->context; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC location_server_context_free(&location->context); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/channels/rdpdr/server/rdpdr_main.c b/channels/rdpdr/server/rdpdr_main.c index a6abd6a77..a39846471 100644 --- a/channels/rdpdr/server/rdpdr_main.c +++ b/channels/rdpdr/server/rdpdr_main.c @@ -3552,7 +3552,10 @@ RdpdrServerContext* rdpdr_server_context_new(HANDLE vcm) return context; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC rdpdr_server_context_free(context); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/channels/rdpecam/server/camera_device_enumerator_main.c b/channels/rdpecam/server/camera_device_enumerator_main.c index b629713b5..3516fc6d3 100644 --- a/channels/rdpecam/server/camera_device_enumerator_main.c +++ b/channels/rdpecam/server/camera_device_enumerator_main.c @@ -590,7 +590,10 @@ CamDevEnumServerContext* cam_dev_enum_server_context_new(HANDLE vcm) return &enumerator->context; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC cam_dev_enum_server_context_free(&enumerator->context); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/channels/rdpecam/server/camera_device_main.c b/channels/rdpecam/server/camera_device_main.c index 5a13e8bae..62b3b20a3 100644 --- a/channels/rdpecam/server/camera_device_main.c +++ b/channels/rdpecam/server/camera_device_main.c @@ -947,7 +947,10 @@ CameraDeviceServerContext* camera_device_server_context_new(HANDLE vcm) return &device->context; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC camera_device_server_context_free(&device->context); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/channels/rdpei/server/rdpei_main.c b/channels/rdpei/server/rdpei_main.c index 84acaab5f..3d9c02d27 100644 --- a/channels/rdpei/server/rdpei_main.c +++ b/channels/rdpei/server/rdpei_main.c @@ -82,7 +82,10 @@ RdpeiServerContext* rdpei_server_context_new(HANDLE vcm) return ret; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC rdpei_server_context_free(ret); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/channels/rdpemsc/server/mouse_cursor_main.c b/channels/rdpemsc/server/mouse_cursor_main.c index 30d3c79ef..8fcc3d228 100644 --- a/channels/rdpemsc/server/mouse_cursor_main.c +++ b/channels/rdpemsc/server/mouse_cursor_main.c @@ -705,7 +705,10 @@ MouseCursorServerContext* mouse_cursor_server_context_new(HANDLE vcm) return &mouse_cursor->context; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC mouse_cursor_server_context_free(&mouse_cursor->context); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/channels/rdpgfx/server/rdpgfx_main.c b/channels/rdpgfx/server/rdpgfx_main.c index 1078efca1..91962169b 100644 --- a/channels/rdpgfx/server/rdpgfx_main.c +++ b/channels/rdpgfx/server/rdpgfx_main.c @@ -1749,7 +1749,10 @@ RdpgfxServerContext* rdpgfx_server_context_new(HANDLE vcm) priv->activeCapSet = empty; return context; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC rdpgfx_server_context_free(context); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/channels/rdpsnd/server/rdpsnd_main.c b/channels/rdpsnd/server/rdpsnd_main.c index fe3f878af..c33a54f02 100644 --- a/channels/rdpsnd/server/rdpsnd_main.c +++ b/channels/rdpsnd/server/rdpsnd_main.c @@ -1069,7 +1069,10 @@ RdpsndServerContext* rdpsnd_server_context_new(HANDLE vcm) priv->ownThread = TRUE; return context; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC rdpsnd_server_context_free(context); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/channels/telemetry/server/telemetry_main.c b/channels/telemetry/server/telemetry_main.c index ebfcd31ee..83251e96d 100644 --- a/channels/telemetry/server/telemetry_main.c +++ b/channels/telemetry/server/telemetry_main.c @@ -421,7 +421,10 @@ TelemetryServerContext* telemetry_server_context_new(HANDLE vcm) return &telemetry->context; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC telemetry_server_context_free(&telemetry->context); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/client/X11/xf_cliprdr.c b/client/X11/xf_cliprdr.c index cee2f5c6a..9687386df 100644 --- a/client/X11/xf_cliprdr.c +++ b/client/X11/xf_cliprdr.c @@ -2425,7 +2425,10 @@ xfClipboard* xf_clipboard_new(xfContext* xfc, BOOL relieveFilenameRestriction) return clipboard; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC xf_clipboard_free(clipboard); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/client/X11/xf_floatbar.c b/client/X11/xf_floatbar.c index 531c7bc46..4008e1c1d 100644 --- a/client/X11/xf_floatbar.c +++ b/client/X11/xf_floatbar.c @@ -363,7 +363,10 @@ xfFloatbar* xf_floatbar_new(xfContext* xfc, Window window, const char* name, DWO XFreeStringList(missingList); return floatbar; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC xf_floatbar_free(floatbar); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/client/common/client_cliprdr_file.c b/client/common/client_cliprdr_file.c index 6a3cb0606..1fd9fccb6 100644 --- a/client/common/client_cliprdr_file.c +++ b/client/common/client_cliprdr_file.c @@ -2453,7 +2453,10 @@ CliprdrFileContext* cliprdr_file_context_new(void* context) return file; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC cliprdr_file_context_free(file); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/client/common/file.c b/client/common/file.c index a1726ff1c..3de54ef8c 100644 --- a/client/common/file.c +++ b/client/common/file.c @@ -2644,7 +2644,10 @@ rdpFile* freerdp_client_rdp_file_new_ex(DWORD flags) return file; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC freerdp_client_rdp_file_free(file); + WINPR_PRAGMA_DIAG_POP return NULL; } void freerdp_client_rdp_file_free(rdpFile* file) diff --git a/include/freerdp/crypto/certificate_store.h b/include/freerdp/crypto/certificate_store.h index bc0a0fe5c..e7e43e17a 100644 --- a/include/freerdp/crypto/certificate_store.h +++ b/include/freerdp/crypto/certificate_store.h @@ -48,7 +48,7 @@ extern "C" FREERDP_API freerdp_certificate_store_result freerdp_certificate_store_contains_data( rdpCertificateStore* store, const rdpCertificateData* data); - WINPR_ATTR_MALLOC(freerdp_certificate_store_free, 1) + WINPR_ATTR_MALLOC(freerdp_certificate_data_free, 1) FREERDP_API rdpCertificateData* freerdp_certificate_store_load_data(rdpCertificateStore* store, const char* host, UINT16 port); diff --git a/libfreerdp/cache/bitmap.c b/libfreerdp/cache/bitmap.c index 61d08c61e..d0eb895bf 100644 --- a/libfreerdp/cache/bitmap.c +++ b/libfreerdp/cache/bitmap.c @@ -383,8 +383,10 @@ rdpBitmapCache* bitmap_cache_new(rdpContext* context) return bitmapCache; fail: - + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC bitmap_cache_free(bitmapCache); + WINPR_PRAGMA_DIAG_POP return NULL; } @@ -485,7 +487,10 @@ BITMAP_UPDATE* copy_bitmap_update(rdpContext* context, const BITMAP_UPDATE* poin return dst; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC free_bitmap_update(context, dst); + WINPR_PRAGMA_DIAG_POP return NULL; } @@ -510,7 +515,10 @@ CACHE_BITMAP_ORDER* copy_cache_bitmap_order(rdpContext* context, const CACHE_BIT return dst; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC free_cache_bitmap_order(context, dst); + WINPR_PRAGMA_DIAG_POP return NULL; } @@ -544,7 +552,10 @@ CACHE_BITMAP_V2_ORDER* copy_cache_bitmap_v2_order(rdpContext* context, return dst; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC free_cache_bitmap_v2_order(context, dst); + WINPR_PRAGMA_DIAG_POP return NULL; } @@ -578,7 +589,10 @@ CACHE_BITMAP_V3_ORDER* copy_cache_bitmap_v3_order(rdpContext* context, return dst; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC free_cache_bitmap_v3_order(context, dst); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/cache/brush.c b/libfreerdp/cache/brush.c index 79b69327b..b66a3afd6 100644 --- a/libfreerdp/cache/brush.c +++ b/libfreerdp/cache/brush.c @@ -270,7 +270,10 @@ rdpBrushCache* brush_cache_new(rdpContext* context) return brushCache; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC brush_cache_free(brushCache); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/cache/cache.c b/libfreerdp/cache/cache.c index afd155a74..79da1d413 100644 --- a/libfreerdp/cache/cache.c +++ b/libfreerdp/cache/cache.c @@ -73,7 +73,10 @@ rdpCache* cache_new(rdpContext* context) return cache; error: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC cache_free(cache); + WINPR_PRAGMA_DIAG_POP return NULL; } @@ -103,7 +106,10 @@ CACHE_COLOR_TABLE_ORDER* copy_cache_color_table_order(rdpContext* context, *dst = *order; return dst; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC free_cache_color_table_order(context, dst); + WINPR_PRAGMA_DIAG_POP return NULL; } @@ -131,7 +137,10 @@ SURFACE_BITS_COMMAND* copy_surface_bits_command(rdpContext* context, return dst; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC free_surface_bits_command(context, dst); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/cache/glyph.c b/libfreerdp/cache/glyph.c index 62fd5a515..3653b7ebf 100644 --- a/libfreerdp/cache/glyph.c +++ b/libfreerdp/cache/glyph.c @@ -710,7 +710,10 @@ rdpGlyphCache* glyph_cache_new(rdpContext* context) return glyphCache; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC glyph_cache_free(glyphCache); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/cache/nine_grid.c b/libfreerdp/cache/nine_grid.c index 229a3369f..b8b90cb55 100644 --- a/libfreerdp/cache/nine_grid.c +++ b/libfreerdp/cache/nine_grid.c @@ -145,7 +145,10 @@ rdpNineGridCache* nine_grid_cache_new(rdpContext* context) return nine_grid; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC nine_grid_cache_free(nine_grid); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/cache/offscreen.c b/libfreerdp/cache/offscreen.c index c139dcb03..256358381 100644 --- a/libfreerdp/cache/offscreen.c +++ b/libfreerdp/cache/offscreen.c @@ -218,7 +218,10 @@ rdpOffscreenCache* offscreen_cache_new(rdpContext* context) return offscreenCache; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC offscreen_cache_free(offscreenCache); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/cache/palette.c b/libfreerdp/cache/palette.c index 10879574a..be35fd899 100644 --- a/libfreerdp/cache/palette.c +++ b/libfreerdp/cache/palette.c @@ -136,6 +136,9 @@ PALETTE_UPDATE* copy_palette_update(rdpContext* context, const PALETTE_UPDATE* p *dst = *pointer; return dst; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC free_palette_update(context, dst); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/codec/bulk.c b/libfreerdp/codec/bulk.c index 7cb4065ce..a63375e1c 100644 --- a/libfreerdp/codec/bulk.c +++ b/libfreerdp/codec/bulk.c @@ -368,7 +368,10 @@ rdpBulk* bulk_new(rdpContext* context) return bulk; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC bulk_free(bulk); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/codec/dsp_ffmpeg.c b/libfreerdp/codec/dsp_ffmpeg.c index e4be675c9..49c194602 100644 --- a/libfreerdp/codec/dsp_ffmpeg.c +++ b/libfreerdp/codec/dsp_ffmpeg.c @@ -637,7 +637,10 @@ FREERDP_DSP_CONTEXT* freerdp_dsp_ffmpeg_context_new(BOOL encode) context->channelmix = Stream_New(NULL, 1024); if (!context->channelmix) { + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC freerdp_dsp_ffmpeg_context_free(context); + WINPR_PRAGMA_DIAG_POP return NULL; } context->encoder = encode; diff --git a/libfreerdp/codec/h264.c b/libfreerdp/codec/h264.c index 310cff337..4bfc3c0b7 100644 --- a/libfreerdp/codec/h264.c +++ b/libfreerdp/codec/h264.c @@ -691,7 +691,10 @@ H264_CONTEXT* h264_context_new(BOOL Compressor) return h264; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC h264_context_free(h264); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/common/assistance.c b/libfreerdp/common/assistance.c index e714e6330..bb9eaa2d6 100644 --- a/libfreerdp/common/assistance.c +++ b/libfreerdp/common/assistance.c @@ -1378,7 +1378,10 @@ rdpAssistanceFile* freerdp_assistance_file_new(void) return file; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC freerdp_assistance_file_free(file); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/core/aad.c b/libfreerdp/core/aad.c index 7bbbd3d34..cafad7694 100644 --- a/libfreerdp/core/aad.c +++ b/libfreerdp/core/aad.c @@ -804,7 +804,10 @@ rdpAad* aad_new(rdpContext* context, rdpTransport* transport) return aad; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC aad_free(aad); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/core/client.c b/libfreerdp/core/client.c index 6ccff20e3..febf0ef65 100644 --- a/libfreerdp/core/client.c +++ b/libfreerdp/core/client.c @@ -163,7 +163,10 @@ rdpChannels* freerdp_channels_new(freerdp* instance) return channels; error: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC freerdp_channels_free(channels); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/core/gateway/http.c b/libfreerdp/core/gateway/http.c index bd1ef894d..874f43bc0 100644 --- a/libfreerdp/core/gateway/http.c +++ b/libfreerdp/core/gateway/http.c @@ -164,7 +164,10 @@ HttpContext* http_context_new(void) return context; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC http_context_free(context); + WINPR_PRAGMA_DIAG_POP return NULL; } @@ -1502,7 +1505,10 @@ HttpResponse* http_response_new(void) response->TransferEncoding = TransferEncodingIdentity; return response; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC http_response_free(response); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/core/gateway/rdg.c b/libfreerdp/core/gateway/rdg.c index 3cadfb936..3f86ae436 100644 --- a/libfreerdp/core/gateway/rdg.c +++ b/libfreerdp/core/gateway/rdg.c @@ -2228,7 +2228,10 @@ rdpRdg* rdg_new(rdpContext* context) return rdg; rdg_alloc_error: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC rdg_free(rdg); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/core/gateway/rpc.c b/libfreerdp/core/gateway/rpc.c index 15896a055..ad4007b30 100644 --- a/libfreerdp/core/gateway/rpc.c +++ b/libfreerdp/core/gateway/rpc.c @@ -957,7 +957,10 @@ rdpRpc* rpc_new(rdpTransport* transport) return rpc; out_free: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC rpc_free(rpc); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/core/gateway/rpc_client.c b/libfreerdp/core/gateway/rpc_client.c index a470d41f1..3a3f0ce44 100644 --- a/libfreerdp/core/gateway/rpc_client.c +++ b/libfreerdp/core/gateway/rpc_client.c @@ -1194,7 +1194,10 @@ RpcClient* rpc_client_new(rdpContext* context, UINT32 max_recv_frag) obj->fnObjectFree = rpc_array_client_call_free; return client; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC rpc_client_free(client); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/core/gateway/wst.c b/libfreerdp/core/gateway/wst.c index 1698bb543..94492a587 100644 --- a/libfreerdp/core/gateway/wst.c +++ b/libfreerdp/core/gateway/wst.c @@ -833,7 +833,10 @@ rdpWst* wst_new(rdpContext* context) return wst; wst_alloc_error: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC wst_free(wst); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/core/license.c b/libfreerdp/core/license.c index 7d4923cd8..c8cac1254 100644 --- a/libfreerdp/core/license.c +++ b/libfreerdp/core/license.c @@ -2697,7 +2697,10 @@ rdpLicense* license_new(rdpRdp* rdp) return license; out_error: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC license_free(license); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/core/nla.c b/libfreerdp/core/nla.c index ad3583c52..41ba4e830 100644 --- a/libfreerdp/core/nla.c +++ b/libfreerdp/core/nla.c @@ -1988,9 +1988,10 @@ rdpNla* nla_new(rdpContext* context, rdpTransport* transport) return nla; cleanup: - credssp_auth_free(nla->auth); - free(nla->identity); + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC nla_free(nla); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/core/orders.c b/libfreerdp/core/orders.c index 092bea99a..dd19d9d9b 100644 --- a/libfreerdp/core/orders.c +++ b/libfreerdp/core/orders.c @@ -2234,7 +2234,10 @@ static CACHE_BITMAP_ORDER* update_read_cache_bitmap_order(rdpUpdate* update, wSt cache_bitmap->compressed = compressed; return cache_bitmap; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC free_cache_bitmap_order(update->context, cache_bitmap); + WINPR_PRAGMA_DIAG_POP return NULL; } @@ -2376,7 +2379,10 @@ static CACHE_BITMAP_V2_ORDER* update_read_cache_bitmap_v2_order(rdpUpdate* updat cache_bitmap_v2->compressed = compressed; return cache_bitmap_v2; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC free_cache_bitmap_v2_order(update->context, cache_bitmap_v2); + WINPR_PRAGMA_DIAG_POP return NULL; } @@ -2522,7 +2528,10 @@ static CACHE_BITMAP_V3_ORDER* update_read_cache_bitmap_v3_order(rdpUpdate* updat Stream_Read(s, bitmapData->data, bitmapData->length); return cache_bitmap_v3; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC free_cache_bitmap_v3_order(update->context, cache_bitmap_v3); + WINPR_PRAGMA_DIAG_POP return NULL; } @@ -2595,7 +2604,10 @@ static CACHE_COLOR_TABLE_ORDER* update_read_cache_color_table_order(rdpUpdate* u return cache_color_table; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC free_cache_color_table_order(update->context, cache_color_table); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/core/rdp.c b/libfreerdp/core/rdp.c index e7690ece7..44caa915c 100644 --- a/libfreerdp/core/rdp.c +++ b/libfreerdp/core/rdp.c @@ -2362,7 +2362,10 @@ rdpRdp* rdp_new(rdpContext* context) return rdp; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC rdp_free(rdp); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/core/server.c b/libfreerdp/core/server.c index 84e32f4d3..0c4772f63 100644 --- a/libfreerdp/core/server.c +++ b/libfreerdp/core/server.c @@ -1953,6 +1953,9 @@ rdpPeerChannel* server_channel_common_new(freerdp_peer* client, UINT16 index, UI strncpy(channel->channelName, name, ARRAYSIZE(channel->channelName) - 1); return channel; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC server_channel_common_free(channel); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/core/transport.c b/libfreerdp/core/transport.c index bd7261ce4..39fbac40a 100644 --- a/libfreerdp/core/transport.c +++ b/libfreerdp/core/transport.c @@ -1603,7 +1603,10 @@ rdpTransport* transport_new(rdpContext* context) return transport; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC transport_free(transport); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/core/update.c b/libfreerdp/core/update.c index 8e98958ef..aa2fccb87 100644 --- a/libfreerdp/core/update.c +++ b/libfreerdp/core/update.c @@ -231,7 +231,10 @@ BITMAP_UPDATE* update_read_bitmap_update(rdpUpdate* update, wStream* s) return bitmapUpdate; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC free_bitmap_update(update->context, bitmapUpdate); + WINPR_PRAGMA_DIAG_POP return NULL; } @@ -289,7 +292,10 @@ PALETTE_UPDATE* update_read_palette(rdpUpdate* update, wStream* s) return palette_update; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC free_palette_update(update->context, palette_update); + WINPR_PRAGMA_DIAG_POP return NULL; } @@ -343,7 +349,10 @@ POINTER_POSITION_UPDATE* update_read_pointer_position(rdpUpdate* update, wStream Stream_Read_UINT16(s, pointer_position->yPos); /* yPos (2 bytes) */ return pointer_position; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC free_pointer_position_update(update->context, pointer_position); + WINPR_PRAGMA_DIAG_POP return NULL; } @@ -362,7 +371,10 @@ POINTER_SYSTEM_UPDATE* update_read_pointer_system(rdpUpdate* update, wStream* s) Stream_Read_UINT32(s, pointer_system->type); /* systemPointerType (4 bytes) */ return pointer_system; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC free_pointer_system_update(update->context, pointer_system); + WINPR_PRAGMA_DIAG_POP return NULL; } @@ -509,7 +521,10 @@ POINTER_COLOR_UPDATE* update_read_pointer_color(rdpUpdate* update, wStream* s, B return pointer_color; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC free_pointer_color_update(update->context, pointer_color); + WINPR_PRAGMA_DIAG_POP return NULL; } @@ -635,7 +650,10 @@ POINTER_LARGE_UPDATE* update_read_pointer_large(rdpUpdate* update, wStream* s) return pointer; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC free_pointer_large_update(update->context, pointer); + WINPR_PRAGMA_DIAG_POP return NULL; } @@ -665,7 +683,10 @@ POINTER_NEW_UPDATE* update_read_pointer_new(rdpUpdate* update, wStream* s) return pointer_new; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC free_pointer_new_update(update->context, pointer_new); + WINPR_PRAGMA_DIAG_POP return NULL; } @@ -684,7 +705,10 @@ POINTER_CACHED_UPDATE* update_read_pointer_cached(rdpUpdate* update, wStream* s) Stream_Read_UINT16(s, pointer->cacheIndex); /* cacheIndex (2 bytes) */ return pointer; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC free_pointer_cached_update(update->context, pointer); + WINPR_PRAGMA_DIAG_POP return NULL; } @@ -3234,7 +3258,10 @@ rdpUpdate* update_new(rdpRdp* rdp) return &update->common; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC update_free(&update->common); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/core/update.h b/libfreerdp/core/update.h index 360aae684..adfd2ebcd 100644 --- a/libfreerdp/core/update.h +++ b/libfreerdp/core/update.h @@ -30,6 +30,10 @@ #include +#include "../cache/bitmap.h" +#include "../cache/palette.h" +#include "../cache/pointer.h" + #define UPDATE_TYPE_ORDERS 0x0000 #define UPDATE_TYPE_BITMAP 0x0001 #define UPDATE_TYPE_PALETTE 0x0002 @@ -180,16 +184,29 @@ FREERDP_LOCAL BOOL update_recv_play_sound(rdpUpdate* update, wStream* s); FREERDP_LOCAL BOOL update_recv_pointer(rdpUpdate* update, wStream* s); FREERDP_LOCAL BOOL update_recv(rdpUpdate* update, wStream* s); +WINPR_ATTR_MALLOC(free_bitmap_update, 2) FREERDP_LOCAL BITMAP_UPDATE* update_read_bitmap_update(rdpUpdate* update, wStream* s); + +WINPR_ATTR_MALLOC(free_palette_update, 2) FREERDP_LOCAL PALETTE_UPDATE* update_read_palette(rdpUpdate* update, wStream* s); +WINPR_ATTR_MALLOC(free_pointer_system_update, 2) FREERDP_LOCAL POINTER_SYSTEM_UPDATE* update_read_pointer_system(rdpUpdate* update, wStream* s); + +WINPR_ATTR_MALLOC(free_pointer_position_update, 2) FREERDP_LOCAL POINTER_POSITION_UPDATE* update_read_pointer_position(rdpUpdate* update, wStream* s); + +WINPR_ATTR_MALLOC(free_pointer_color_update, 2) FREERDP_LOCAL POINTER_COLOR_UPDATE* update_read_pointer_color(rdpUpdate* update, wStream* s, BYTE xorBpp); + +WINPR_ATTR_MALLOC(free_pointer_large_update, 2) FREERDP_LOCAL POINTER_LARGE_UPDATE* update_read_pointer_large(rdpUpdate* update, wStream* s); +WINPR_ATTR_MALLOC(free_pointer_new_update, 2) FREERDP_LOCAL POINTER_NEW_UPDATE* update_read_pointer_new(rdpUpdate* update, wStream* s); + +WINPR_ATTR_MALLOC(free_pointer_cached_update, 2) FREERDP_LOCAL POINTER_CACHED_UPDATE* update_read_pointer_cached(rdpUpdate* update, wStream* s); FREERDP_LOCAL BOOL update_read_refresh_rect(rdpUpdate* update, wStream* s); diff --git a/libfreerdp/crypto/certificate_store.c b/libfreerdp/crypto/certificate_store.c index 9d3a8df00..bd182b43c 100644 --- a/libfreerdp/crypto/certificate_store.c +++ b/libfreerdp/crypto/certificate_store.c @@ -164,7 +164,10 @@ rdpCertificateStore* freerdp_certificate_store_new(const rdpSettings* settings) return store; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC freerdp_certificate_store_free(store); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/crypto/privatekey.c b/libfreerdp/crypto/privatekey.c index b27752a29..dee7d45c1 100644 --- a/libfreerdp/crypto/privatekey.c +++ b/libfreerdp/crypto/privatekey.c @@ -288,7 +288,10 @@ rdpPrivateKey* freerdp_key_clone(const rdpPrivateKey* key) return _key; out_fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC freerdp_key_free(_key); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/emu/scard/smartcard_emulate.c b/libfreerdp/emu/scard/smartcard_emulate.c index d2dbdccda..36f8994d8 100644 --- a/libfreerdp/emu/scard/smartcard_emulate.c +++ b/libfreerdp/emu/scard/smartcard_emulate.c @@ -2683,7 +2683,10 @@ SmartcardEmulationContext* Emulate_New(const rdpSettings* settings) return smartcard; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC Emulate_Free(smartcard); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/libfreerdp/utils/smartcard_call.c b/libfreerdp/utils/smartcard_call.c index 5eb7f6e05..31d3b38f0 100644 --- a/libfreerdp/utils/smartcard_call.c +++ b/libfreerdp/utils/smartcard_call.c @@ -1901,7 +1901,10 @@ scard_call_context* smartcard_call_context_new(const rdpSettings* settings) return ctx; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC smartcard_call_context_free(ctx); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/server/proxy/pf_channel.c b/server/proxy/pf_channel.c index c13ae2db5..eacd91e3d 100644 --- a/server/proxy/pf_channel.c +++ b/server/proxy/pf_channel.c @@ -83,7 +83,10 @@ ChannelStateTracker* channelTracker_new(pServerStaticChannelContext* channel, return ret; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC channelTracker_free(ret); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/server/proxy/pf_context.c b/server/proxy/pf_context.c index 9a476d8f0..0c9d95eda 100644 --- a/server/proxy/pf_context.c +++ b/server/proxy/pf_context.c @@ -329,7 +329,10 @@ proxyData* proxy_data_new(void) return pdata; error: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC proxy_data_free(pdata); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/server/proxy/pf_server.c b/server/proxy/pf_server.c index 6223f2332..e505373ae 100644 --- a/server/proxy/pf_server.c +++ b/server/proxy/pf_server.c @@ -959,7 +959,10 @@ proxyServer* pf_server_new(const proxyConfig* config) return server; out: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC pf_server_free(server); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/server/shadow/shadow_capture.c b/server/shadow/shadow_capture.c index f0619b51e..af43fefcb 100644 --- a/server/shadow/shadow_capture.c +++ b/server/shadow/shadow_capture.c @@ -237,7 +237,10 @@ rdpShadowCapture* shadow_capture_new(rdpShadowServer* server) if (!InitializeCriticalSectionAndSpinCount(&(capture->lock), 4000)) { + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC shadow_capture_free(capture); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/server/shadow/shadow_screen.c b/server/shadow/shadow_screen.c index 798a75132..eb0fbb670 100644 --- a/server/shadow/shadow_screen.c +++ b/server/shadow/shadow_screen.c @@ -85,7 +85,10 @@ rdpShadowScreen* shadow_screen_new(rdpShadowServer* server) return screen; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC shadow_screen_free(screen); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/winpr/include/winpr/platform.h b/winpr/include/winpr/platform.h index 9bf6ee879..00f9d224b 100644 --- a/winpr/include/winpr/platform.h +++ b/winpr/include/winpr/platform.h @@ -37,6 +37,8 @@ _Pragma("clang diagnostic ignored \"-Wunused-const-variable\"") #define WINPR_PRAGMA_DIAG_IGNORED_FORMAT_SECURITY \ _Pragma("clang diagnostic ignored \"-Wformat-security\"") +#define WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC \ + _Pragma("clang diagnostic ignored \"-Wmismatched-dealloc\"") #define WINPR_PRAGMA_DIAG_POP _Pragma("clang diagnostic pop") #elif defined(__GNUC__) #define WINPR_PRAGMA_DIAG_PUSH _Pragma("GCC diagnostic push") @@ -54,6 +56,8 @@ _Pragma("GCC diagnostic ignored \"-Wunused-const-variable\"") #define WINPR_PRAGMA_DIAG_IGNORED_FORMAT_SECURITY \ _Pragma("GCC diagnostic ignored \"-Wformat-security\"") +#define WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC \ + _Pragma("GCC diagnostic ignored \"-Wmismatched-dealloc\"") #define WINPR_PRAGMA_DIAG_POP _Pragma("GCC diagnostic pop") #else #define WINPR_PRAGMA_DIAG_PUSH @@ -64,6 +68,7 @@ #define WINPR_PRAGMA_DIAG_IGNORED_ATOMIC_SEQ_CST #define WINPR_PRAGMA_DIAG_IGNORED_UNUSED_CONST_VAR #define WINPR_PRAGMA_DIAG_IGNORED_FORMAT_SECURITY +#define WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC #define WINPR_PRAGMA_DIAG_POP #endif diff --git a/winpr/libwinpr/crypto/cipher.c b/winpr/libwinpr/crypto/cipher.c index 28dac6a0f..7613a7613 100644 --- a/winpr/libwinpr/crypto/cipher.c +++ b/winpr/libwinpr/crypto/cipher.c @@ -64,12 +64,10 @@ struct winpr_rc4_ctx_private_st static WINPR_RC4_CTX* winpr_RC4_New_Internal(const BYTE* key, size_t keylen, BOOL override_fips) { - WINPR_RC4_CTX* ctx = NULL; - if (!key || (keylen == 0)) return NULL; - ctx = calloc(1, sizeof(WINPR_RC4_CTX)); + WINPR_RC4_CTX* ctx = (WINPR_RC4_CTX*)calloc(1, sizeof(WINPR_RC4_CTX)); if (!ctx) return NULL; @@ -111,7 +109,11 @@ static WINPR_RC4_CTX* winpr_RC4_New_Internal(const BYTE* key, size_t keylen, BOO return ctx; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC + winpr_RC4_Free(ctx); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/winpr/libwinpr/crypto/hash.c b/winpr/libwinpr/crypto/hash.c index 92d7eac04..f98968e36 100644 --- a/winpr/libwinpr/crypto/hash.c +++ b/winpr/libwinpr/crypto/hash.c @@ -176,7 +176,7 @@ struct winpr_hmac_ctx_private_st WINPR_HMAC_CTX* winpr_HMAC_New(void) { - WINPR_HMAC_CTX* ctx = calloc(1, sizeof(WINPR_HMAC_CTX)); + WINPR_HMAC_CTX* ctx = (WINPR_HMAC_CTX*)calloc(1, sizeof(WINPR_HMAC_CTX)); if (!ctx) return NULL; #if defined(WITH_OPENSSL) @@ -205,7 +205,10 @@ WINPR_HMAC_CTX* winpr_HMAC_New(void) return ctx; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC winpr_HMAC_Free(ctx); + WINPR_PRAGMA_DIAG_POP return NULL; } @@ -473,7 +476,10 @@ WINPR_DIGEST_CTX* winpr_Digest_New(void) return ctx; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC winpr_Digest_Free(ctx); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/winpr/libwinpr/utils/collections/ArrayList.c b/winpr/libwinpr/utils/collections/ArrayList.c index 8e25fabb7..19091d2e7 100644 --- a/winpr/libwinpr/utils/collections/ArrayList.c +++ b/winpr/libwinpr/utils/collections/ArrayList.c @@ -585,7 +585,10 @@ wArrayList* ArrayList_New(BOOL synchronized) InitializeCriticalSectionAndSpinCount(&arrayList->lock, 4000); return arrayList; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC ArrayList_Free(arrayList); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/winpr/libwinpr/utils/collections/BufferPool.c b/winpr/libwinpr/utils/collections/BufferPool.c index 3ef7353de..b6ded5d92 100644 --- a/winpr/libwinpr/utils/collections/BufferPool.c +++ b/winpr/libwinpr/utils/collections/BufferPool.c @@ -525,7 +525,10 @@ wBufferPool* BufferPool_New(BOOL synchronized, SSIZE_T fixedSize, DWORD alignmen return pool; out_error: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC BufferPool_Free(pool); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/winpr/libwinpr/utils/collections/CountdownEvent.c b/winpr/libwinpr/utils/collections/CountdownEvent.c index 5398f6ed0..fd23e0c9a 100644 --- a/winpr/libwinpr/utils/collections/CountdownEvent.c +++ b/winpr/libwinpr/utils/collections/CountdownEvent.c @@ -184,7 +184,10 @@ wCountdownEvent* CountdownEvent_New(size_t initialCount) return countdown; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC CountdownEvent_Free(countdown); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/winpr/libwinpr/utils/collections/HashTable.c b/winpr/libwinpr/utils/collections/HashTable.c index 78cb63661..e577a4df7 100644 --- a/winpr/libwinpr/utils/collections/HashTable.c +++ b/winpr/libwinpr/utils/collections/HashTable.c @@ -792,7 +792,10 @@ wHashTable* HashTable_New(BOOL synchronized) return table; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC HashTable_Free(table); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/winpr/libwinpr/utils/collections/MessageQueue.c b/winpr/libwinpr/utils/collections/MessageQueue.c index 1364b2f51..6c5335920 100644 --- a/winpr/libwinpr/utils/collections/MessageQueue.c +++ b/winpr/libwinpr/utils/collections/MessageQueue.c @@ -258,7 +258,10 @@ wMessageQueue* MessageQueue_New(const wObject* callback) return queue; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC MessageQueue_Free(queue); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/winpr/libwinpr/utils/collections/PubSub.c b/winpr/libwinpr/utils/collections/PubSub.c index 37356b1f3..1b820b08d 100644 --- a/winpr/libwinpr/utils/collections/PubSub.c +++ b/winpr/libwinpr/utils/collections/PubSub.c @@ -248,7 +248,10 @@ wPubSub* PubSub_New(BOOL synchronized) return pubSub; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC PubSub_Free(pubSub); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/winpr/libwinpr/utils/collections/Queue.c b/winpr/libwinpr/utils/collections/Queue.c index 763b888d3..203f98dc2 100644 --- a/winpr/libwinpr/utils/collections/Queue.c +++ b/winpr/libwinpr/utils/collections/Queue.c @@ -325,7 +325,10 @@ wQueue* Queue_New(BOOL synchronized, SSIZE_T capacity, SSIZE_T growthFactor) return queue; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC Queue_Free(queue); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/winpr/libwinpr/utils/collections/Stack.c b/winpr/libwinpr/utils/collections/Stack.c index 6bcee7dcd..e3b90f8a9 100644 --- a/winpr/libwinpr/utils/collections/Stack.c +++ b/winpr/libwinpr/utils/collections/Stack.c @@ -235,7 +235,10 @@ wStack* Stack_New(BOOL synchronized) return stack; out_free: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC Stack_Free(stack); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/winpr/libwinpr/utils/collections/StreamPool.c b/winpr/libwinpr/utils/collections/StreamPool.c index b0db5a38f..dcaecfb5a 100644 --- a/winpr/libwinpr/utils/collections/StreamPool.c +++ b/winpr/libwinpr/utils/collections/StreamPool.c @@ -381,7 +381,10 @@ wStreamPool* StreamPool_New(BOOL synchronized, size_t defaultSize) return pool; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC StreamPool_Free(pool); + WINPR_PRAGMA_DIAG_POP return NULL; } diff --git a/winpr/libwinpr/utils/ini.c b/winpr/libwinpr/utils/ini.c index 7e111532c..fee7df64d 100644 --- a/winpr/libwinpr/utils/ini.c +++ b/winpr/libwinpr/utils/ini.c @@ -832,7 +832,10 @@ wIniFile* IniFile_New(void) return ini; fail: + WINPR_PRAGMA_DIAG_PUSH + WINPR_PRAGMA_DIAG_IGNORED_MISMATCHED_DEALLOC IniFile_Free(ini); + WINPR_PRAGMA_DIAG_POP return NULL; }