From 7990eec166ddb072b6101c4a60e96c8dbcd3b4ac Mon Sep 17 00:00:00 2001 From: akallabeth Date: Mon, 26 Jan 2026 13:08:35 +0100 Subject: [PATCH] [freerdp] mark all WINPR_ATTR_MALLOC also nodiscard --- include/freerdp/assistance.h | 6 ++++++ include/freerdp/cache/persistent.h | 1 + include/freerdp/client.h | 2 ++ include/freerdp/client/client_cliprdr_file.h | 1 + include/freerdp/client/file.h | 2 ++ include/freerdp/client/rdpgfx.h | 1 + include/freerdp/codec/audio.h | 2 ++ include/freerdp/codec/clear.h | 1 + include/freerdp/codec/color.h | 3 ++- include/freerdp/codec/dsp.h | 1 + include/freerdp/codec/h264.h | 1 + include/freerdp/codec/interleaved.h | 1 + include/freerdp/codec/nsc.h | 1 + include/freerdp/codec/planar.h | 1 + include/freerdp/codec/progressive.h | 2 ++ include/freerdp/codec/rfx.h | 9 +++++++- include/freerdp/codec/yuv.h | 1 + include/freerdp/codec/zgfx.h | 1 + include/freerdp/codecs.h | 8 ++++--- include/freerdp/crypto/certificate.h | 19 +++++++++++++++++ include/freerdp/crypto/certificate_data.h | 5 +++++ include/freerdp/crypto/certificate_store.h | 4 ++++ include/freerdp/crypto/privatekey.h | 6 ++++++ .../freerdp/emulate/scard/smartcard_emulate.h | 1 + include/freerdp/freerdp.h | 1 + include/freerdp/gdi/video.h | 1 + include/freerdp/graphics.h | 1 + include/freerdp/listener.h | 1 + include/freerdp/locale/keyboard.h | 3 +++ include/freerdp/metrics.h | 1 + include/freerdp/peer.h | 1 + include/freerdp/redirection.h | 1 + include/freerdp/server/ainput.h | 1 + include/freerdp/server/audin.h | 1 + include/freerdp/server/cliprdr.h | 1 + include/freerdp/server/disp.h | 1 + include/freerdp/server/drdynvc.h | 1 + include/freerdp/server/echo.h | 1 + include/freerdp/server/encomsp.h | 1 + include/freerdp/server/gfxredir.h | 1 + include/freerdp/server/location.h | 1 + include/freerdp/server/proxy/proxy_config.h | 3 +++ include/freerdp/server/proxy/proxy_context.h | 3 +++ include/freerdp/server/proxy/proxy_server.h | 1 + include/freerdp/server/rail.h | 1 + include/freerdp/server/rdpdr.h | 1 + include/freerdp/server/rdpecam-enumerator.h | 1 + include/freerdp/server/rdpecam.h | 1 + include/freerdp/server/rdpei.h | 1 + include/freerdp/server/rdpemsc.h | 1 + include/freerdp/server/rdpgfx.h | 1 + include/freerdp/server/rdpsnd.h | 1 + include/freerdp/server/remdesk.h | 1 + include/freerdp/server/shadow.h | 1 + include/freerdp/server/telemetry.h | 1 + include/freerdp/settings.h | 9 ++++++++ include/freerdp/transport_io.h | 1 + libfreerdp/cache/bitmap.h | 5 +++++ libfreerdp/cache/brush.h | 2 ++ libfreerdp/cache/cache.h | 3 +++ libfreerdp/cache/glyph.h | 13 +++++++++--- libfreerdp/cache/nine_grid.h | 1 + libfreerdp/cache/offscreen.h | 2 ++ libfreerdp/cache/palette.h | 2 ++ libfreerdp/cache/pointer.h | 7 +++++++ libfreerdp/codec/bulk.h | 1 + libfreerdp/codec/dsp_ffmpeg.h | 2 ++ libfreerdp/codec/region.c | 1 + libfreerdp/core/aad.c | 1 + libfreerdp/core/aad.h | 1 + libfreerdp/core/autodetect.h | 1 + libfreerdp/core/client.h | 1 + libfreerdp/core/credssp_auth.h | 1 + libfreerdp/core/fastpath.h | 2 ++ libfreerdp/core/gateway/http.h | 4 ++++ libfreerdp/core/gateway/rdg.h | 1 + libfreerdp/core/gateway/rpc.h | 2 ++ libfreerdp/core/gateway/rpc_client.h | 2 ++ libfreerdp/core/gateway/rts.c | 1 + libfreerdp/core/gateway/tsg.h | 1 + libfreerdp/core/gateway/websocket.h | 2 ++ libfreerdp/core/gateway/wst.h | 1 + libfreerdp/core/heartbeat.h | 1 + libfreerdp/core/input.h | 1 + libfreerdp/core/license.h | 1 + libfreerdp/core/mcs.h | 1 + libfreerdp/core/message.h | 1 + libfreerdp/core/multitransport.h | 1 + libfreerdp/core/nego.h | 1 + libfreerdp/core/nla.c | 1 + libfreerdp/core/nla.h | 1 + libfreerdp/core/orders.c | 4 ++++ libfreerdp/core/rdp.h | 21 +++++++++++++++---- libfreerdp/core/rdstls.h | 1 + libfreerdp/core/server.h | 1 + libfreerdp/core/settings.c | 1 + libfreerdp/core/timer.h | 1 + libfreerdp/core/transport.h | 6 ++++++ libfreerdp/core/update.h | 9 ++++++++ libfreerdp/crypto/certificate.h | 2 ++ libfreerdp/crypto/tls.h | 1 + libfreerdp/utils/helpers.c | 1 + 102 files changed, 232 insertions(+), 12 deletions(-) diff --git a/include/freerdp/assistance.h b/include/freerdp/assistance.h index e38e58b77..8034d782a 100644 --- a/include/freerdp/assistance.h +++ b/include/freerdp/assistance.h @@ -32,18 +32,23 @@ extern "C" typedef struct rdp_assistance_file rdpAssistanceFile; WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API BYTE* freerdp_assistance_hex_string_to_bin(const void* str, size_t* size); WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char* freerdp_assistance_bin_to_hex_string(const void* data, size_t size); WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char* freerdp_assistance_generate_pass_stub(DWORD flags); WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char* freerdp_assistance_construct_expert_blob(const char* name, const char* pass); WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API BYTE* freerdp_assistance_encrypt_pass_stub(const char* password, const char* passStub, size_t* pEncryptedSize); @@ -66,6 +71,7 @@ extern "C" FREERDP_API void freerdp_assistance_file_free(rdpAssistanceFile* file); WINPR_ATTR_MALLOC(freerdp_assistance_file_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpAssistanceFile* freerdp_assistance_file_new(void); FREERDP_API void freerdp_assistance_print_file(rdpAssistanceFile* file, wLog* log, DWORD level); diff --git a/include/freerdp/cache/persistent.h b/include/freerdp/cache/persistent.h index a36595b81..bc31ec3f3 100644 --- a/include/freerdp/cache/persistent.h +++ b/include/freerdp/cache/persistent.h @@ -91,6 +91,7 @@ extern "C" FREERDP_API void persistent_cache_free(rdpPersistentCache* persistent); WINPR_ATTR_MALLOC(persistent_cache_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpPersistentCache* persistent_cache_new(void); #ifdef __cplusplus diff --git a/include/freerdp/client.h b/include/freerdp/client.h index ca8908c79..c0338cae0 100644 --- a/include/freerdp/client.h +++ b/include/freerdp/client.h @@ -153,6 +153,7 @@ extern "C" FREERDP_API void freerdp_client_context_free(rdpContext* context); WINPR_ATTR_MALLOC(freerdp_client_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpContext* freerdp_client_context_new(const RDP_CLIENT_ENTRY_POINTS* pEntryPoints); FREERDP_API int freerdp_client_start(rdpContext* context); @@ -338,6 +339,7 @@ extern "C" * @since version 3.16.0 */ WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char* freerdp_client_get_aad_url(rdpClientContext* cctx, freerdp_client_aad_type type, ...); diff --git a/include/freerdp/client/client_cliprdr_file.h b/include/freerdp/client/client_cliprdr_file.h index 6dca587f4..526b52e19 100644 --- a/include/freerdp/client/client_cliprdr_file.h +++ b/include/freerdp/client/client_cliprdr_file.h @@ -35,6 +35,7 @@ extern "C" FREERDP_API void cliprdr_file_context_free(CliprdrFileContext* file); WINPR_ATTR_MALLOC(cliprdr_file_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API CliprdrFileContext* cliprdr_file_context_new(void* context); /**! \brief returns if the implementation supports pasting files in a client file browser. diff --git a/include/freerdp/client/file.h b/include/freerdp/client/file.h index 3368682bf..d22e2af5b 100644 --- a/include/freerdp/client/file.h +++ b/include/freerdp/client/file.h @@ -90,9 +90,11 @@ extern "C" FREERDP_API void freerdp_client_rdp_file_free(rdpFile* file); WINPR_ATTR_MALLOC(freerdp_client_rdp_file_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpFile* freerdp_client_rdp_file_new(void); WINPR_ATTR_MALLOC(freerdp_client_rdp_file_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpFile* freerdp_client_rdp_file_new_ex(DWORD flags); #ifdef __cplusplus diff --git a/include/freerdp/client/rdpgfx.h b/include/freerdp/client/rdpgfx.h index df9e2a7a5..fa0afb56b 100644 --- a/include/freerdp/client/rdpgfx.h +++ b/include/freerdp/client/rdpgfx.h @@ -180,6 +180,7 @@ extern "C" FREERDP_API void rdpgfx_client_context_free(RdpgfxClientContext* context); WINPR_ATTR_MALLOC(rdpgfx_client_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API RdpgfxClientContext* rdpgfx_client_context_new(rdpContext* context); #ifdef __cplusplus diff --git a/include/freerdp/codec/audio.h b/include/freerdp/codec/audio.h index fd4b1f9bb..7c824ed83 100644 --- a/include/freerdp/codec/audio.h +++ b/include/freerdp/codec/audio.h @@ -221,9 +221,11 @@ extern "C" FREERDP_API void audio_formats_free(AUDIO_FORMAT* formats, size_t count); WINPR_ATTR_MALLOC(audio_formats_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API AUDIO_FORMAT* audio_format_new(void); WINPR_ATTR_MALLOC(audio_formats_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API AUDIO_FORMAT* audio_formats_new(size_t count); #ifdef __cplusplus diff --git a/include/freerdp/codec/clear.h b/include/freerdp/codec/clear.h index 631838c05..8e6fa87e7 100644 --- a/include/freerdp/codec/clear.h +++ b/include/freerdp/codec/clear.h @@ -50,6 +50,7 @@ extern "C" FREERDP_API void clear_context_free(CLEAR_CONTEXT* WINPR_RESTRICT clear); WINPR_ATTR_MALLOC(clear_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API CLEAR_CONTEXT* clear_context_new(BOOL Compressor); #ifdef __cplusplus diff --git a/include/freerdp/codec/color.h b/include/freerdp/codec/color.h index c7e6cca3f..4d41c3c9c 100644 --- a/include/freerdp/codec/color.h +++ b/include/freerdp/codec/color.h @@ -301,7 +301,7 @@ typedef struct gdi_palette gdiPalette; WINPR_DEPRECATED_VAR("[since 3.21.0] use freerdp_glyph_convert_ex instead", WINPR_ATTR_MALLOC(winpr_aligned_free, 1) - FREERDP_API BYTE* freerdp_glyph_convert( + WINPR_ATTR_NODISCARD FREERDP_API BYTE* freerdp_glyph_convert( UINT32 width, UINT32 height, const BYTE* WINPR_RESTRICT data)); #endif @@ -317,6 +317,7 @@ typedef struct gdi_palette gdiPalette; * @since version 3.21.0 */ WINPR_ATTR_MALLOC(winpr_aligned_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API BYTE* freerdp_glyph_convert_ex(UINT32 width, UINT32 height, const BYTE* WINPR_RESTRICT data, size_t len); diff --git a/include/freerdp/codec/dsp.h b/include/freerdp/codec/dsp.h index ff6c08ad3..c23857c26 100644 --- a/include/freerdp/codec/dsp.h +++ b/include/freerdp/codec/dsp.h @@ -35,6 +35,7 @@ extern "C" FREERDP_API void freerdp_dsp_context_free(FREERDP_DSP_CONTEXT* context); WINPR_ATTR_MALLOC(freerdp_dsp_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API FREERDP_DSP_CONTEXT* freerdp_dsp_context_new(BOOL encoder); FREERDP_API BOOL freerdp_dsp_supports_format(const AUDIO_FORMAT* WINPR_RESTRICT format, diff --git a/include/freerdp/codec/h264.h b/include/freerdp/codec/h264.h index 77fcc0c6f..4974c1a75 100644 --- a/include/freerdp/codec/h264.h +++ b/include/freerdp/codec/h264.h @@ -126,6 +126,7 @@ extern "C" FREERDP_API void h264_context_free(H264_CONTEXT* h264); WINPR_ATTR_MALLOC(h264_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API H264_CONTEXT* h264_context_new(BOOL Compressor); #ifdef __cplusplus diff --git a/include/freerdp/codec/interleaved.h b/include/freerdp/codec/interleaved.h index 9bc8b96fc..16b8f92f8 100644 --- a/include/freerdp/codec/interleaved.h +++ b/include/freerdp/codec/interleaved.h @@ -56,6 +56,7 @@ extern "C" bitmap_interleaved_context_free(BITMAP_INTERLEAVED_CONTEXT* WINPR_RESTRICT interleaved); WINPR_ATTR_MALLOC(bitmap_interleaved_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API BITMAP_INTERLEAVED_CONTEXT* bitmap_interleaved_context_new(BOOL Compressor); #ifdef __cplusplus diff --git a/include/freerdp/codec/nsc.h b/include/freerdp/codec/nsc.h index dad891237..fdf79c17a 100644 --- a/include/freerdp/codec/nsc.h +++ b/include/freerdp/codec/nsc.h @@ -73,6 +73,7 @@ extern "C" FREERDP_API void nsc_context_free(NSC_CONTEXT* context); WINPR_ATTR_MALLOC(nsc_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API NSC_CONTEXT* nsc_context_new(void); #ifdef __cplusplus diff --git a/include/freerdp/codec/planar.h b/include/freerdp/codec/planar.h index ba58b08f3..4fc75e26c 100644 --- a/include/freerdp/codec/planar.h +++ b/include/freerdp/codec/planar.h @@ -53,6 +53,7 @@ extern "C" FREERDP_API void freerdp_bitmap_planar_context_free(BITMAP_PLANAR_CONTEXT* context); WINPR_ATTR_MALLOC(freerdp_bitmap_planar_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API BITMAP_PLANAR_CONTEXT* freerdp_bitmap_planar_context_new(DWORD flags, UINT32 width, UINT32 height); diff --git a/include/freerdp/codec/progressive.h b/include/freerdp/codec/progressive.h index c1d4597ea..95c25f445 100644 --- a/include/freerdp/codec/progressive.h +++ b/include/freerdp/codec/progressive.h @@ -64,9 +64,11 @@ extern "C" FREERDP_API void progressive_context_free(PROGRESSIVE_CONTEXT* progressive); WINPR_ATTR_MALLOC(progressive_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API PROGRESSIVE_CONTEXT* progressive_context_new(BOOL Compressor); WINPR_ATTR_MALLOC(progressive_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API PROGRESSIVE_CONTEXT* progressive_context_new_ex(BOOL Compressor, UINT32 ThreadingFlags); diff --git a/include/freerdp/codec/rfx.h b/include/freerdp/codec/rfx.h index 81d00d55f..671960e4b 100644 --- a/include/freerdp/codec/rfx.h +++ b/include/freerdp/codec/rfx.h @@ -102,17 +102,22 @@ extern "C" const BYTE* WINPR_RESTRICT image_data, UINT32 width, UINT32 height, UINT32 rowstride); + WINPR_ATTR_MALLOC(rfx_message_free, 2) + WINPR_ATTR_NODISCARD FREERDP_API RFX_MESSAGE* rfx_encode_message(RFX_CONTEXT* WINPR_RESTRICT context, const RFX_RECT* WINPR_RESTRICT rects, size_t numRects, const BYTE* WINPR_RESTRICT data, UINT32 width, UINT32 height, size_t scanline); + FREERDP_API void rfx_message_list_free(RFX_MESSAGE_LIST* messages); + + WINPR_ATTR_MALLOC(rfx_message_list_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API RFX_MESSAGE_LIST* rfx_encode_messages(RFX_CONTEXT* WINPR_RESTRICT context, const RFX_RECT* WINPR_RESTRICT rects, size_t numRects, const BYTE* WINPR_RESTRICT data, UINT32 width, UINT32 height, UINT32 scanline, size_t* WINPR_RESTRICT numMessages, size_t maxDataSize); - FREERDP_API void rfx_message_list_free(RFX_MESSAGE_LIST* messages); FREERDP_API const RFX_MESSAGE* rfx_message_list_get(const RFX_MESSAGE_LIST* WINPR_RESTRICT messages, size_t idx); @@ -124,9 +129,11 @@ extern "C" FREERDP_API void rfx_context_free(RFX_CONTEXT* context); WINPR_ATTR_MALLOC(rfx_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API RFX_CONTEXT* rfx_context_new_ex(BOOL encoder, UINT32 ThreadingFlags); WINPR_ATTR_MALLOC(rfx_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API RFX_CONTEXT* rfx_context_new(BOOL encoder); FREERDP_API BOOL rfx_context_reset(RFX_CONTEXT* WINPR_RESTRICT context, UINT32 width, diff --git a/include/freerdp/codec/yuv.h b/include/freerdp/codec/yuv.h index 07efe481d..dddf553e9 100644 --- a/include/freerdp/codec/yuv.h +++ b/include/freerdp/codec/yuv.h @@ -61,6 +61,7 @@ extern "C" FREERDP_API void yuv_context_free(YUV_CONTEXT* context); WINPR_ATTR_MALLOC(yuv_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API YUV_CONTEXT* yuv_context_new(BOOL encoder, UINT32 ThreadingFlags); #ifdef __cplusplus diff --git a/include/freerdp/codec/zgfx.h b/include/freerdp/codec/zgfx.h index 0a0d43613..cf822a065 100644 --- a/include/freerdp/codec/zgfx.h +++ b/include/freerdp/codec/zgfx.h @@ -57,6 +57,7 @@ extern "C" FREERDP_API void zgfx_context_free(ZGFX_CONTEXT* zgfx); WINPR_ATTR_MALLOC(zgfx_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API ZGFX_CONTEXT* zgfx_context_new(BOOL Compressor); #ifdef __cplusplus diff --git a/include/freerdp/codecs.h b/include/freerdp/codecs.h index 7b03f950a..61cb80e26 100644 --- a/include/freerdp/codecs.h +++ b/include/freerdp/codecs.h @@ -84,15 +84,17 @@ extern "C" * @since version 3.6.0 */ WINPR_ATTR_MALLOC(freerdp_client_codecs_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpCodecs* freerdp_client_codecs_new(UINT32 TheadingFlags); #if !defined(WITHOUT_FREERDP_3x_DEPRECATED) WINPR_DEPRECATED_VAR("[since 3.6.0] Use freerdp_client_codecs_free", FREERDP_API void codecs_free(rdpCodecs* codecs)); - WINPR_DEPRECATED_VAR("[since 3.6.0] Use freerdp_client_codecs_new", - WINPR_ATTR_MALLOC(codecs_free, 1) - FREERDP_API rdpCodecs* codecs_new(rdpContext* context)); + WINPR_DEPRECATED_VAR( + "[since 3.6.0] Use freerdp_client_codecs_new", + WINPR_ATTR_MALLOC(codecs_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpCodecs* codecs_new(rdpContext* context)); #endif /** @brief return a string representation of the given codecid diff --git a/include/freerdp/crypto/certificate.h b/include/freerdp/crypto/certificate.h index d632d3957..41bf97327 100644 --- a/include/freerdp/crypto/certificate.h +++ b/include/freerdp/crypto/certificate.h @@ -41,36 +41,45 @@ extern "C" FREERDP_API void freerdp_certificate_free(rdpCertificate* certificate); WINPR_ATTR_MALLOC(freerdp_certificate_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpCertificate* freerdp_certificate_new(void); WINPR_ATTR_MALLOC(freerdp_certificate_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpCertificate* freerdp_certificate_new_from_file(const char* file); WINPR_ATTR_MALLOC(freerdp_certificate_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpCertificate* freerdp_certificate_new_from_pem(const char* pem); WINPR_ATTR_MALLOC(freerdp_certificate_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpCertificate* freerdp_certificate_new_from_der(const BYTE* data, size_t length); FREERDP_API BOOL freerdp_certificate_is_rsa(const rdpCertificate* certificate); WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char* freerdp_certificate_get_hash(const rdpCertificate* certificate, const char* hash, size_t* plength); WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char* freerdp_certificate_get_fingerprint_by_hash(const rdpCertificate* certificate, const char* hash); WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char* freerdp_certificate_get_fingerprint_by_hash_ex(const rdpCertificate* certificate, const char* hash, BOOL separator); WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char* freerdp_certificate_get_fingerprint(const rdpCertificate* certificate); WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char* freerdp_certificate_get_pem(const rdpCertificate* certificate, size_t* pLength); @@ -84,23 +93,29 @@ extern "C" * @since version 3.8.0 */ WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char* freerdp_certificate_get_pem_ex(const rdpCertificate* certificate, size_t* pLength, BOOL withCertChain); WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API BYTE* freerdp_certificate_get_der(const rdpCertificate* certificate, size_t* pLength); WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char* freerdp_certificate_get_subject(const rdpCertificate* certificate); WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char* freerdp_certificate_get_issuer(const rdpCertificate* certificate); WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char* freerdp_certificate_get_upn(const rdpCertificate* certificate); WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char* freerdp_certificate_get_email(const rdpCertificate* certificate); /** @@ -111,16 +126,19 @@ extern "C" * @since version 3.8.0 */ WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char* freerdp_certificate_get_validity(const rdpCertificate* certificate, BOOL startDate); FREERDP_API WINPR_MD_TYPE freerdp_certificate_get_signature_alg(const rdpCertificate* cert); WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char* freerdp_certificate_get_common_name(const rdpCertificate* cert, size_t* plength); WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char** freerdp_certificate_get_dns_names(const rdpCertificate* cert, size_t* pcount, size_t** pplengths); FREERDP_API void freerdp_certificate_free_dns_names(size_t count, size_t* lengths, @@ -137,6 +155,7 @@ extern "C" FREERDP_API BOOL freerdp_certificate_is_rdp_security_compatible(const rdpCertificate* cert); WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char* freerdp_certificate_get_param(const rdpCertificate* cert, enum FREERDP_CERT_PARAM what, size_t* psize); diff --git a/include/freerdp/crypto/certificate_data.h b/include/freerdp/crypto/certificate_data.h index 96a620dc8..0aa1996ca 100644 --- a/include/freerdp/crypto/certificate_data.h +++ b/include/freerdp/crypto/certificate_data.h @@ -33,21 +33,26 @@ extern "C" typedef struct rdp_certificate_data rdpCertificateData; + WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char* freerdp_certificate_data_hash(const char* hostname, UINT16 port); FREERDP_API void freerdp_certificate_data_free(rdpCertificateData* data); WINPR_ATTR_MALLOC(freerdp_certificate_data_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpCertificateData* freerdp_certificate_data_new(const char* hostname, UINT16 port, const rdpCertificate* xcert); WINPR_ATTR_MALLOC(freerdp_certificate_data_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpCertificateData* freerdp_certificate_data_new_from_pem(const char* hostname, UINT16 port, const char* pem, size_t length); WINPR_ATTR_MALLOC(freerdp_certificate_data_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpCertificateData* freerdp_certificate_data_new_from_file(const char* hostname, UINT16 port, const char* file); diff --git a/include/freerdp/crypto/certificate_store.h b/include/freerdp/crypto/certificate_store.h index fc84da105..d3ec0b2c0 100644 --- a/include/freerdp/crypto/certificate_store.h +++ b/include/freerdp/crypto/certificate_store.h @@ -43,12 +43,14 @@ extern "C" FREERDP_API void freerdp_certificate_store_free(rdpCertificateStore* store); WINPR_ATTR_MALLOC(freerdp_certificate_store_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpCertificateStore* freerdp_certificate_store_new(const rdpSettings* settings); FREERDP_API freerdp_certificate_store_result freerdp_certificate_store_contains_data( rdpCertificateStore* store, const rdpCertificateData* data); WINPR_ATTR_MALLOC(freerdp_certificate_data_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpCertificateData* freerdp_certificate_store_load_data(rdpCertificateStore* store, const char* host, UINT16 port); @@ -72,6 +74,8 @@ extern "C" * * @return The certificate store file path or \b NULL */ + WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char* freerdp_certificate_store_get_cert_path(const rdpCertificateStore* store, const char* host, UINT16 port); diff --git a/include/freerdp/crypto/privatekey.h b/include/freerdp/crypto/privatekey.h index 23e1c3f68..1f6247d9e 100644 --- a/include/freerdp/crypto/privatekey.h +++ b/include/freerdp/crypto/privatekey.h @@ -33,11 +33,13 @@ extern "C" FREERDP_API void freerdp_key_free(rdpPrivateKey* key); WINPR_ATTR_MALLOC(freerdp_key_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpPrivateKey* freerdp_key_new(void); FREERDP_API rdpPrivateKey* freerdp_key_new_from_file(const char* keyfile); WINPR_ATTR_MALLOC(freerdp_key_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpPrivateKey* freerdp_key_new_from_pem(const char* pem); /** @brief Create a private key from file \b keyfile with optional password \b password @@ -47,6 +49,8 @@ extern "C" * @return An allocated private key, \b NULL in case of failure. * @since version 3.16.0 */ + WINPR_ATTR_MALLOC(freerdp_key_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpPrivateKey* freerdp_key_new_from_file_enc(const char* keyfile, const char* password); @@ -58,6 +62,7 @@ extern "C" * @since version 3.16.0 */ WINPR_ATTR_MALLOC(freerdp_key_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpPrivateKey* freerdp_key_new_from_pem_enc(const char* pem, const char* password); FREERDP_API BOOL freerdp_key_is_rsa(const rdpPrivateKey* key); @@ -74,6 +79,7 @@ extern "C" * @since version 3.16.0 */ WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char* freerdp_key_get_pem(const rdpPrivateKey* key, size_t* plen, const char* password); diff --git a/include/freerdp/emulate/scard/smartcard_emulate.h b/include/freerdp/emulate/scard/smartcard_emulate.h index c2865b485..7a12c1304 100644 --- a/include/freerdp/emulate/scard/smartcard_emulate.h +++ b/include/freerdp/emulate/scard/smartcard_emulate.h @@ -37,6 +37,7 @@ extern "C" FREERDP_API void Emulate_Free(SmartcardEmulationContext* context); WINPR_ATTR_MALLOC(Emulate_Free, 1) + WINPR_ATTR_NODISCARD FREERDP_API SmartcardEmulationContext* Emulate_New(const rdpSettings* settings); FREERDP_API BOOL Emulate_IsConfigured(SmartcardEmulationContext* context); diff --git a/include/freerdp/freerdp.h b/include/freerdp/freerdp.h index 30b6ebb62..9e7f70819 100644 --- a/include/freerdp/freerdp.h +++ b/include/freerdp/freerdp.h @@ -691,6 +691,7 @@ owned by rdpRdp */ FREERDP_API void freerdp_free(freerdp* instance); WINPR_ATTR_MALLOC(freerdp_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API freerdp* freerdp_new(void); FREERDP_API BOOL freerdp_focus_required(freerdp* instance); diff --git a/include/freerdp/gdi/video.h b/include/freerdp/gdi/video.h index a9e50f81c..816d3105e 100644 --- a/include/freerdp/gdi/video.h +++ b/include/freerdp/gdi/video.h @@ -44,6 +44,7 @@ extern "C" FREERDP_API void gdi_video_free(gdiVideoContext* context); WINPR_ATTR_MALLOC(gdi_video_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API gdiVideoContext* gdi_video_new(rdpGdi* gdi); #ifdef __cplusplus diff --git a/include/freerdp/graphics.h b/include/freerdp/graphics.h index 1b98635b2..7dc4e8dda 100644 --- a/include/freerdp/graphics.h +++ b/include/freerdp/graphics.h @@ -166,6 +166,7 @@ extern "C" FREERDP_API void graphics_free(rdpGraphics* graphics); WINPR_ATTR_MALLOC(graphics_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpGraphics* graphics_new(rdpContext* context); #ifdef __cplusplus diff --git a/include/freerdp/listener.h b/include/freerdp/listener.h index 56ede560a..28d6002cf 100644 --- a/include/freerdp/listener.h +++ b/include/freerdp/listener.h @@ -77,6 +77,7 @@ extern "C" FREERDP_API void freerdp_listener_free(freerdp_listener* instance); WINPR_ATTR_MALLOC(freerdp_listener_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API freerdp_listener* freerdp_listener_new(void); #ifdef __cplusplus diff --git a/include/freerdp/locale/keyboard.h b/include/freerdp/locale/keyboard.h index be4530503..1530b342e 100644 --- a/include/freerdp/locale/keyboard.h +++ b/include/freerdp/locale/keyboard.h @@ -243,6 +243,7 @@ FREERDP_API void freerdp_keyboard_layouts_free(RDP_KEYBOARD_LAYOUT* layouts, siz * @return An allocated array of keyboard layouts, free with \b freerdp_keyboard_layouts_free */ WINPR_ATTR_MALLOC(freerdp_keyboard_layouts_free, 1) +WINPR_ATTR_NODISCARD FREERDP_API RDP_KEYBOARD_LAYOUT* freerdp_keyboard_get_layouts(DWORD types, size_t* count); /** @brief Get a string representation of a keyboard layout. @@ -298,6 +299,7 @@ FREERDP_API void freerdp_keyboard_remap_free(FREERDP_REMAP_TABLE* table); * @since version 3.11.0 */ WINPR_ATTR_MALLOC(freerdp_keyboard_remap_free, 1) +WINPR_ATTR_NODISCARD FREERDP_API FREERDP_REMAP_TABLE* freerdp_keyboard_remap_string_to_list(const char* list); /** @brief does remap a RDP scancode according to the remap table provided. @@ -336,6 +338,7 @@ FREERDP_API void freerdp_codepages_free(RDP_CODEPAGE* codepages); * freed by \ref freerdp_codepages_free */ WINPR_ATTR_MALLOC(freerdp_codepages_free, 1) +WINPR_ATTR_NODISCARD FREERDP_API RDP_CODEPAGE* freerdp_keyboard_get_matching_codepages(DWORD column, const char* filter, size_t* count); diff --git a/include/freerdp/metrics.h b/include/freerdp/metrics.h index 6d00bfd62..306899475 100644 --- a/include/freerdp/metrics.h +++ b/include/freerdp/metrics.h @@ -43,6 +43,7 @@ extern "C" FREERDP_API void metrics_free(rdpMetrics* metrics); WINPR_ATTR_MALLOC(metrics_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpMetrics* metrics_new(rdpContext* context); #ifdef __cplusplus diff --git a/include/freerdp/peer.h b/include/freerdp/peer.h index 7b3ebf4d6..369b6ad95 100644 --- a/include/freerdp/peer.h +++ b/include/freerdp/peer.h @@ -216,6 +216,7 @@ extern "C" FREERDP_API void freerdp_peer_free(freerdp_peer* client); WINPR_ATTR_MALLOC(freerdp_peer_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API freerdp_peer* freerdp_peer_new(int sockfd); FREERDP_API BOOL freerdp_peer_set_local_and_hostname(freerdp_peer* client, diff --git a/include/freerdp/redirection.h b/include/freerdp/redirection.h index 2f40e1010..8e82272f0 100644 --- a/include/freerdp/redirection.h +++ b/include/freerdp/redirection.h @@ -55,6 +55,7 @@ extern "C" FREERDP_API void redirection_free(rdpRedirection* redirection); WINPR_ATTR_MALLOC(redirection_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpRedirection* redirection_new(void); /** \brief This function checks if all necessary settings for a given \b rdpRedirection are diff --git a/include/freerdp/server/ainput.h b/include/freerdp/server/ainput.h index 21c47d64b..c3f7a9ad2 100644 --- a/include/freerdp/server/ainput.h +++ b/include/freerdp/server/ainput.h @@ -115,6 +115,7 @@ extern "C" FREERDP_API void ainput_server_context_free(ainput_server_context* context); WINPR_ATTR_MALLOC(ainput_server_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API ainput_server_context* ainput_server_context_new(HANDLE vcm); #ifdef __cplusplus diff --git a/include/freerdp/server/audin.h b/include/freerdp/server/audin.h index 51d83fe12..dcbfb03ae 100644 --- a/include/freerdp/server/audin.h +++ b/include/freerdp/server/audin.h @@ -156,6 +156,7 @@ extern "C" FREERDP_API void audin_server_context_free(audin_server_context* context); WINPR_ATTR_MALLOC(audin_server_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API audin_server_context* audin_server_context_new(HANDLE vcm); /** \brief sets the supported audio formats for AUDIN server channel context. diff --git a/include/freerdp/server/cliprdr.h b/include/freerdp/server/cliprdr.h index 77ebb008f..94b33ddb1 100644 --- a/include/freerdp/server/cliprdr.h +++ b/include/freerdp/server/cliprdr.h @@ -137,6 +137,7 @@ extern "C" FREERDP_API void cliprdr_server_context_free(CliprdrServerContext* context); WINPR_ATTR_MALLOC(cliprdr_server_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API CliprdrServerContext* cliprdr_server_context_new(HANDLE vcm); #ifdef __cplusplus diff --git a/include/freerdp/server/disp.h b/include/freerdp/server/disp.h index d17c3c299..e53f2bcef 100644 --- a/include/freerdp/server/disp.h +++ b/include/freerdp/server/disp.h @@ -69,6 +69,7 @@ extern "C" FREERDP_API void disp_server_context_free(DispServerContext* context); WINPR_ATTR_MALLOC(disp_server_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API DispServerContext* disp_server_context_new(HANDLE vcm); #ifdef __cplusplus diff --git a/include/freerdp/server/drdynvc.h b/include/freerdp/server/drdynvc.h index 09453f4c9..b81ca06bc 100644 --- a/include/freerdp/server/drdynvc.h +++ b/include/freerdp/server/drdynvc.h @@ -54,6 +54,7 @@ extern "C" FREERDP_API void drdynvc_server_context_free(DrdynvcServerContext* context); WINPR_ATTR_MALLOC(drdynvc_server_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API DrdynvcServerContext* drdynvc_server_context_new(HANDLE vcm); #ifdef __cplusplus diff --git a/include/freerdp/server/echo.h b/include/freerdp/server/echo.h index 609d8c30d..ffc637770 100644 --- a/include/freerdp/server/echo.h +++ b/include/freerdp/server/echo.h @@ -93,6 +93,7 @@ extern "C" FREERDP_API void echo_server_context_free(echo_server_context* context); WINPR_ATTR_MALLOC(echo_server_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API echo_server_context* echo_server_context_new(HANDLE vcm); #ifdef __cplusplus diff --git a/include/freerdp/server/encomsp.h b/include/freerdp/server/encomsp.h index 534fd3e18..ab263e453 100644 --- a/include/freerdp/server/encomsp.h +++ b/include/freerdp/server/encomsp.h @@ -95,6 +95,7 @@ extern "C" FREERDP_API void encomsp_server_context_free(EncomspServerContext* context); WINPR_ATTR_MALLOC(encomsp_server_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API EncomspServerContext* encomsp_server_context_new(HANDLE vcm); #ifdef __cplusplus diff --git a/include/freerdp/server/gfxredir.h b/include/freerdp/server/gfxredir.h index 4bd7480f9..b8f7a9605 100644 --- a/include/freerdp/server/gfxredir.h +++ b/include/freerdp/server/gfxredir.h @@ -95,6 +95,7 @@ extern "C" FREERDP_API void gfxredir_server_context_free(GfxRedirServerContext* context); WINPR_ATTR_MALLOC(gfxredir_server_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API GfxRedirServerContext* gfxredir_server_context_new(HANDLE vcm); #ifdef __cplusplus diff --git a/include/freerdp/server/location.h b/include/freerdp/server/location.h index 8078878f9..ed2baa323 100644 --- a/include/freerdp/server/location.h +++ b/include/freerdp/server/location.h @@ -133,6 +133,7 @@ extern "C" FREERDP_API void location_server_context_free(LocationServerContext* context); WINPR_ATTR_MALLOC(location_server_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API LocationServerContext* location_server_context_new(HANDLE vcm); #ifdef __cplusplus diff --git a/include/freerdp/server/proxy/proxy_config.h b/include/freerdp/server/proxy/proxy_config.h index da190b96b..79ea068c5 100644 --- a/include/freerdp/server/proxy/proxy_config.h +++ b/include/freerdp/server/proxy/proxy_config.h @@ -144,6 +144,7 @@ extern "C" * @return A proxyConfig or NULL in case of failure. */ WINPR_ATTR_MALLOC(pf_server_config_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API proxyConfig* server_config_load_ini(wIniFile* ini); /** * @brief pf_server_config_load_file Create a proxyConfig from a INI file found at path. @@ -153,6 +154,7 @@ extern "C" * @return A proxyConfig or NULL in case of failure. */ WINPR_ATTR_MALLOC(pf_server_config_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API proxyConfig* pf_server_config_load_file(const char* path); /** @@ -164,6 +166,7 @@ extern "C" * @return A proxyConfig or NULL in case of failure. */ WINPR_ATTR_MALLOC(pf_server_config_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API proxyConfig* pf_server_config_load_buffer(const char* buffer); /** diff --git a/include/freerdp/server/proxy/proxy_context.h b/include/freerdp/server/proxy/proxy_context.h index 0132c666a..b958e7cf9 100644 --- a/include/freerdp/server/proxy/proxy_context.h +++ b/include/freerdp/server/proxy/proxy_context.h @@ -90,6 +90,7 @@ extern "C" typedef struct p_server_context pServerContext; WINPR_ATTR_MALLOC(StaticChannelContext_free, 1) + WINPR_ATTR_NODISCARD pServerStaticChannelContext* StaticChannelContext_new(pServerContext* ps, const char* name, UINT32 id); @@ -167,11 +168,13 @@ extern "C" FREERDP_API BOOL pf_context_init_server_context(freerdp_peer* client); WINPR_ATTR_MALLOC(freerdp_client_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API pClientContext* pf_context_create_client_context(const rdpSettings* clientSettings); FREERDP_API void proxy_data_free(proxyData* pdata); WINPR_ATTR_MALLOC(proxy_data_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API proxyData* proxy_data_new(void); FREERDP_API void proxy_data_set_client_context(proxyData* pdata, pClientContext* context); FREERDP_API void proxy_data_set_server_context(proxyData* pdata, pServerContext* context); diff --git a/include/freerdp/server/proxy/proxy_server.h b/include/freerdp/server/proxy/proxy_server.h index 702b3268d..30a6e0610 100644 --- a/include/freerdp/server/proxy/proxy_server.h +++ b/include/freerdp/server/proxy/proxy_server.h @@ -46,6 +46,7 @@ extern "C" * @return A new proxy server instance or NULL on failure. */ WINPR_ATTR_MALLOC(pf_server_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API proxyServer* pf_server_new(const proxyConfig* config); /** diff --git a/include/freerdp/server/rail.h b/include/freerdp/server/rail.h index 0fdd1a3c1..985baf3ed 100644 --- a/include/freerdp/server/rail.h +++ b/include/freerdp/server/rail.h @@ -145,6 +145,7 @@ extern "C" FREERDP_API void rail_server_context_free(RailServerContext* context); WINPR_ATTR_MALLOC(rail_server_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API RailServerContext* rail_server_context_new(HANDLE vcm); FREERDP_API UINT rail_server_handle_messages(RailServerContext* context); diff --git a/include/freerdp/server/rdpdr.h b/include/freerdp/server/rdpdr.h index c4ddc5ba5..4b564e079 100644 --- a/include/freerdp/server/rdpdr.h +++ b/include/freerdp/server/rdpdr.h @@ -223,6 +223,7 @@ struct s_rdpdr_server_context FREERDP_API void rdpdr_server_context_free(RdpdrServerContext* context); WINPR_ATTR_MALLOC(rdpdr_server_context_free, 1) +WINPR_ATTR_NODISCARD FREERDP_API RdpdrServerContext* rdpdr_server_context_new(HANDLE vcm); #ifdef __cplusplus diff --git a/include/freerdp/server/rdpecam-enumerator.h b/include/freerdp/server/rdpecam-enumerator.h index 800caf8a1..ca93ae5cb 100644 --- a/include/freerdp/server/rdpecam-enumerator.h +++ b/include/freerdp/server/rdpecam-enumerator.h @@ -128,6 +128,7 @@ extern "C" FREERDP_API void cam_dev_enum_server_context_free(CamDevEnumServerContext* context); WINPR_ATTR_MALLOC(cam_dev_enum_server_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API CamDevEnumServerContext* cam_dev_enum_server_context_new(HANDLE vcm); #ifdef __cplusplus diff --git a/include/freerdp/server/rdpecam.h b/include/freerdp/server/rdpecam.h index dd1849478..e409b0d13 100644 --- a/include/freerdp/server/rdpecam.h +++ b/include/freerdp/server/rdpecam.h @@ -275,6 +275,7 @@ extern "C" FREERDP_API void camera_device_server_context_free(CameraDeviceServerContext* context); WINPR_ATTR_MALLOC(camera_device_server_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API CameraDeviceServerContext* camera_device_server_context_new(HANDLE vcm); #ifdef __cplusplus diff --git a/include/freerdp/server/rdpei.h b/include/freerdp/server/rdpei.h index 812532e62..74f448f01 100644 --- a/include/freerdp/server/rdpei.h +++ b/include/freerdp/server/rdpei.h @@ -78,6 +78,7 @@ extern "C" FREERDP_API void rdpei_server_context_free(RdpeiServerContext* context); WINPR_ATTR_MALLOC(rdpei_server_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API RdpeiServerContext* rdpei_server_context_new(HANDLE vcm); FREERDP_API void rdpei_server_context_reset(RdpeiServerContext* context); diff --git a/include/freerdp/server/rdpemsc.h b/include/freerdp/server/rdpemsc.h index f1ce98a1e..f9947ba53 100644 --- a/include/freerdp/server/rdpemsc.h +++ b/include/freerdp/server/rdpemsc.h @@ -123,6 +123,7 @@ extern "C" FREERDP_API void mouse_cursor_server_context_free(MouseCursorServerContext* context); WINPR_ATTR_MALLOC(mouse_cursor_server_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API MouseCursorServerContext* mouse_cursor_server_context_new(HANDLE vcm); #ifdef __cplusplus diff --git a/include/freerdp/server/rdpgfx.h b/include/freerdp/server/rdpgfx.h index 262bb386c..933853dc3 100644 --- a/include/freerdp/server/rdpgfx.h +++ b/include/freerdp/server/rdpgfx.h @@ -142,6 +142,7 @@ extern "C" FREERDP_API void rdpgfx_server_context_free(RdpgfxServerContext* context); WINPR_ATTR_MALLOC(rdpgfx_server_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API RdpgfxServerContext* rdpgfx_server_context_new(HANDLE vcm); FREERDP_API BOOL rdpgfx_server_set_own_thread(RdpgfxServerContext* context, diff --git a/include/freerdp/server/rdpsnd.h b/include/freerdp/server/rdpsnd.h index 20fd5fd82..627e157f3 100644 --- a/include/freerdp/server/rdpsnd.h +++ b/include/freerdp/server/rdpsnd.h @@ -185,6 +185,7 @@ extern "C" FREERDP_API void rdpsnd_server_context_free(RdpsndServerContext* context); WINPR_ATTR_MALLOC(rdpsnd_server_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API RdpsndServerContext* rdpsnd_server_context_new(HANDLE vcm); FREERDP_API void rdpsnd_server_context_reset(RdpsndServerContext*); diff --git a/include/freerdp/server/remdesk.h b/include/freerdp/server/remdesk.h index ef4503220..f4baa1f02 100644 --- a/include/freerdp/server/remdesk.h +++ b/include/freerdp/server/remdesk.h @@ -58,6 +58,7 @@ extern "C" FREERDP_API void remdesk_server_context_free(RemdeskServerContext* context); WINPR_ATTR_MALLOC(remdesk_server_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API RemdeskServerContext* remdesk_server_context_new(HANDLE vcm); #ifdef __cplusplus diff --git a/include/freerdp/server/shadow.h b/include/freerdp/server/shadow.h index e6d8cf2e5..7d71edee8 100644 --- a/include/freerdp/server/shadow.h +++ b/include/freerdp/server/shadow.h @@ -352,6 +352,7 @@ extern "C" FREERDP_API void shadow_server_free(rdpShadowServer* server); WINPR_ATTR_MALLOC(shadow_server_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpShadowServer* shadow_server_new(void); FREERDP_API int shadow_capture_align_clip_rect(RECTANGLE_16* rect, const RECTANGLE_16* clip); diff --git a/include/freerdp/server/telemetry.h b/include/freerdp/server/telemetry.h index 0697e7008..d61642587 100644 --- a/include/freerdp/server/telemetry.h +++ b/include/freerdp/server/telemetry.h @@ -102,6 +102,7 @@ extern "C" FREERDP_API void telemetry_server_context_free(TelemetryServerContext* context); WINPR_ATTR_MALLOC(telemetry_server_context_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API TelemetryServerContext* telemetry_server_context_new(HANDLE vcm); #ifdef __cplusplus diff --git a/include/freerdp/settings.h b/include/freerdp/settings.h index 2c0ce8c7a..224b11502 100644 --- a/include/freerdp/settings.h +++ b/include/freerdp/settings.h @@ -94,6 +94,7 @@ extern "C" * \return A newly allocated settings struct or NULL */ WINPR_ATTR_MALLOC(freerdp_settings_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpSettings* freerdp_settings_new(DWORD flags); /** \brief Creates a deep copy of settings @@ -103,6 +104,7 @@ extern "C" * \return A newly allocated copy of \b settings or NULL */ WINPR_ATTR_MALLOC(freerdp_settings_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpSettings* freerdp_settings_clone(const rdpSettings* settings); /** \brief Deep copies settings from \b src to \b dst @@ -153,9 +155,11 @@ extern "C" FREERDP_API void freerdp_addin_argv_free(ADDIN_ARGV* args); WINPR_ATTR_MALLOC(freerdp_addin_argv_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API ADDIN_ARGV* freerdp_addin_argv_new(size_t argc, const char* const argv[]); WINPR_ATTR_MALLOC(freerdp_addin_argv_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API ADDIN_ARGV* freerdp_addin_argv_clone(const ADDIN_ARGV* args); FREERDP_API BOOL freerdp_addin_argv_add_argument(ADDIN_ARGV* args, const char* argument); @@ -193,10 +197,12 @@ extern "C" FREERDP_API void freerdp_device_free(RDPDR_DEVICE* device); WINPR_ATTR_MALLOC(freerdp_device_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API RDPDR_DEVICE* freerdp_device_new(UINT32 Type, size_t count, const char* const args[]); WINPR_ATTR_MALLOC(freerdp_device_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API RDPDR_DEVICE* freerdp_device_clone(const RDPDR_DEVICE* device); FREERDP_API BOOL freerdp_device_equal(const RDPDR_DEVICE* one, const RDPDR_DEVICE* other); @@ -754,6 +760,7 @@ extern "C" * @note Since 3.17.1 this is a wrapper for \b freerdp_GetConfigFilePath(FALSE, "") */ WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char* freerdp_settings_get_config_path(void); /** @brief Sort monitor array according to: @@ -787,6 +794,7 @@ extern "C" * @since version 3.16.0 */ WINPR_ATTR_MALLOC(free, 1) + WINPR_ATTR_NODISCARD FREERDP_API char* freerdp_settings_serialize(const rdpSettings* settings, BOOL pretty, size_t* plength); @@ -798,6 +806,7 @@ extern "C" * @since version 3.16.0 */ WINPR_ATTR_MALLOC(freerdp_settings_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpSettings* freerdp_settings_deserialize(const char* json, size_t length); #ifdef __cplusplus diff --git a/include/freerdp/transport_io.h b/include/freerdp/transport_io.h index 93b509f9d..6b2499c6c 100644 --- a/include/freerdp/transport_io.h +++ b/include/freerdp/transport_io.h @@ -164,6 +164,7 @@ extern "C" * @since version 3.9.0 */ WINPR_ATTR_MALLOC(transport_layer_free, 1) + WINPR_ATTR_NODISCARD FREERDP_API rdpTransportLayer* transport_layer_new(rdpTransport* transport, size_t contextSize); #ifdef __cplusplus diff --git a/libfreerdp/cache/bitmap.h b/libfreerdp/cache/bitmap.h index 4e45170f9..64194b7db 100644 --- a/libfreerdp/cache/bitmap.h +++ b/libfreerdp/cache/bitmap.h @@ -60,17 +60,20 @@ extern "C" FREERDP_LOCAL void bitmap_cache_free(rdpBitmapCache* bitmap_cache); WINPR_ATTR_MALLOC(bitmap_cache_free, 1) + WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpBitmapCache* bitmap_cache_new(rdpContext* context); FREERDP_LOCAL void free_bitmap_update(rdpContext* context, BITMAP_UPDATE* pointer); WINPR_ATTR_MALLOC(free_bitmap_update, 2) + WINPR_ATTR_NODISCARD FREERDP_LOCAL BITMAP_UPDATE* copy_bitmap_update(rdpContext* context, const BITMAP_UPDATE* pointer); FREERDP_LOCAL void free_cache_bitmap_order(rdpContext* context, CACHE_BITMAP_ORDER* order); WINPR_ATTR_MALLOC(free_cache_bitmap_order, 2) + WINPR_ATTR_NODISCARD FREERDP_LOCAL CACHE_BITMAP_ORDER* copy_cache_bitmap_order(rdpContext* context, const CACHE_BITMAP_ORDER* order); @@ -78,6 +81,7 @@ extern "C" CACHE_BITMAP_V2_ORDER* order); WINPR_ATTR_MALLOC(free_cache_bitmap_v2_order, 2) + WINPR_ATTR_NODISCARD FREERDP_LOCAL CACHE_BITMAP_V2_ORDER* copy_cache_bitmap_v2_order(rdpContext* context, const CACHE_BITMAP_V2_ORDER* order); @@ -85,6 +89,7 @@ extern "C" CACHE_BITMAP_V3_ORDER* order); WINPR_ATTR_MALLOC(free_cache_bitmap_v3_order, 2) + WINPR_ATTR_NODISCARD FREERDP_LOCAL CACHE_BITMAP_V3_ORDER* copy_cache_bitmap_v3_order(rdpContext* context, const CACHE_BITMAP_V3_ORDER* order); diff --git a/libfreerdp/cache/brush.h b/libfreerdp/cache/brush.h index 101c2374f..73ee3bf14 100644 --- a/libfreerdp/cache/brush.h +++ b/libfreerdp/cache/brush.h @@ -42,11 +42,13 @@ extern "C" FREERDP_LOCAL void brush_cache_free(rdpBrushCache* brush); WINPR_ATTR_MALLOC(brush_cache_free, 1) + WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpBrushCache* brush_cache_new(rdpContext* context); FREERDP_LOCAL void free_cache_brush_order(rdpContext* context, CACHE_BRUSH_ORDER* order); WINPR_ATTR_MALLOC(free_cache_brush_order, 1) + WINPR_ATTR_NODISCARD FREERDP_LOCAL CACHE_BRUSH_ORDER* copy_cache_brush_order(rdpContext* context, const CACHE_BRUSH_ORDER* order); diff --git a/libfreerdp/cache/cache.h b/libfreerdp/cache/cache.h index 614f1a9af..21625cdce 100644 --- a/libfreerdp/cache/cache.h +++ b/libfreerdp/cache/cache.h @@ -51,18 +51,21 @@ extern "C" FREERDP_LOCAL void cache_free(rdpCache* cache); WINPR_ATTR_MALLOC(cache_free, 1) + WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpCache* cache_new(rdpContext* context); FREERDP_LOCAL void free_cache_color_table_order(rdpContext* context, CACHE_COLOR_TABLE_ORDER* order); WINPR_ATTR_MALLOC(free_cache_color_table_order, 2) + WINPR_ATTR_NODISCARD FREERDP_LOCAL CACHE_COLOR_TABLE_ORDER* copy_cache_color_table_order(rdpContext* context, const CACHE_COLOR_TABLE_ORDER* order); FREERDP_LOCAL void free_surface_bits_command(rdpContext* context, SURFACE_BITS_COMMAND* order); WINPR_ATTR_MALLOC(free_surface_bits_command, 2) + WINPR_ATTR_NODISCARD FREERDP_LOCAL SURFACE_BITS_COMMAND* copy_surface_bits_command(rdpContext* context, const SURFACE_BITS_COMMAND* order); diff --git a/libfreerdp/cache/glyph.h b/libfreerdp/cache/glyph.h index 50e57aa37..f232c0195 100644 --- a/libfreerdp/cache/glyph.h +++ b/libfreerdp/cache/glyph.h @@ -61,15 +61,22 @@ extern "C" FREERDP_LOCAL void glyph_cache_free(rdpGlyphCache* glyph); WINPR_ATTR_MALLOC(glyph_cache_free, 1) + WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpGlyphCache* glyph_cache_new(rdpContext* context); - FREERDP_LOCAL CACHE_GLYPH_ORDER* copy_cache_glyph_order(rdpContext* context, - const CACHE_GLYPH_ORDER* glyph); FREERDP_LOCAL void free_cache_glyph_order(rdpContext* context, CACHE_GLYPH_ORDER* glyph); + WINPR_ATTR_MALLOC(free_cache_glyph_order, 1) + WINPR_ATTR_NODISCARD + FREERDP_LOCAL CACHE_GLYPH_ORDER* copy_cache_glyph_order(rdpContext* context, + const CACHE_GLYPH_ORDER* glyph); + + FREERDP_LOCAL void free_cache_glyph_v2_order(rdpContext* context, CACHE_GLYPH_V2_ORDER* glyph); + + WINPR_ATTR_MALLOC(free_cache_glyph_v2_order, 1) + WINPR_ATTR_NODISCARD FREERDP_LOCAL CACHE_GLYPH_V2_ORDER* copy_cache_glyph_v2_order(rdpContext* context, const CACHE_GLYPH_V2_ORDER* glyph); - FREERDP_LOCAL void free_cache_glyph_v2_order(rdpContext* context, CACHE_GLYPH_V2_ORDER* glyph); #ifdef __cplusplus } diff --git a/libfreerdp/cache/nine_grid.h b/libfreerdp/cache/nine_grid.h index 4f0ce0290..e8847f928 100644 --- a/libfreerdp/cache/nine_grid.h +++ b/libfreerdp/cache/nine_grid.h @@ -41,6 +41,7 @@ extern "C" FREERDP_LOCAL void nine_grid_cache_free(rdpNineGridCache* nine_grid); WINPR_ATTR_MALLOC(nine_grid_cache_free, 1) + WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpNineGridCache* nine_grid_cache_new(rdpContext* context); #ifdef __cplusplus diff --git a/libfreerdp/cache/offscreen.h b/libfreerdp/cache/offscreen.h index bdc89cce9..e176412a2 100644 --- a/libfreerdp/cache/offscreen.h +++ b/libfreerdp/cache/offscreen.h @@ -34,6 +34,7 @@ extern "C" { #endif + WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpBitmap* offscreen_cache_get(rdpOffscreenCache* offscreen_cache, UINT32 index); FREERDP_LOCAL void offscreen_cache_register_callbacks(rdpUpdate* update); @@ -41,6 +42,7 @@ extern "C" FREERDP_LOCAL void offscreen_cache_free(rdpOffscreenCache* offscreen); WINPR_ATTR_MALLOC(offscreen_cache_free, 1) + WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpOffscreenCache* offscreen_cache_new(rdpContext* context); #ifdef __cplusplus diff --git a/libfreerdp/cache/palette.h b/libfreerdp/cache/palette.h index fb5be6a75..87715d14c 100644 --- a/libfreerdp/cache/palette.h +++ b/libfreerdp/cache/palette.h @@ -50,11 +50,13 @@ extern "C" FREERDP_LOCAL void palette_cache_free(rdpPaletteCache* palette_cache); WINPR_ATTR_MALLOC(palette_cache_free, 1) + WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpPaletteCache* palette_cache_new(rdpContext* context); FREERDP_LOCAL void free_palette_update(rdpContext* context, PALETTE_UPDATE* pointer); WINPR_ATTR_MALLOC(free_palette_update, 2) + WINPR_ATTR_NODISCARD FREERDP_LOCAL PALETTE_UPDATE* copy_palette_update(rdpContext* context, const PALETTE_UPDATE* pointer); diff --git a/libfreerdp/cache/pointer.h b/libfreerdp/cache/pointer.h index c54e4f66c..425270618 100644 --- a/libfreerdp/cache/pointer.h +++ b/libfreerdp/cache/pointer.h @@ -45,12 +45,14 @@ extern "C" FREERDP_LOCAL void pointer_cache_free(rdpPointerCache* pointer_cache); WINPR_ATTR_MALLOC(pointer_cache_free, 1) + WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpPointerCache* pointer_cache_new(rdpContext* context); FREERDP_LOCAL void free_pointer_color_update(rdpContext* context, POINTER_COLOR_UPDATE* pointer); WINPR_ATTR_MALLOC(free_pointer_color_update, 1) + WINPR_ATTR_NODISCARD FREERDP_LOCAL POINTER_COLOR_UPDATE* copy_pointer_color_update(rdpContext* context, const POINTER_COLOR_UPDATE* pointer); @@ -58,12 +60,14 @@ extern "C" POINTER_LARGE_UPDATE* pointer); WINPR_ATTR_MALLOC(free_pointer_large_update, 1) + WINPR_ATTR_NODISCARD FREERDP_LOCAL POINTER_LARGE_UPDATE* copy_pointer_large_update(rdpContext* context, const POINTER_LARGE_UPDATE* pointer); FREERDP_LOCAL void free_pointer_new_update(rdpContext* context, POINTER_NEW_UPDATE* pointer); WINPR_ATTR_MALLOC(free_pointer_new_update, 1) + WINPR_ATTR_NODISCARD FREERDP_LOCAL POINTER_NEW_UPDATE* copy_pointer_new_update(rdpContext* context, const POINTER_NEW_UPDATE* pointer); @@ -71,6 +75,7 @@ extern "C" POINTER_CACHED_UPDATE* pointer); WINPR_ATTR_MALLOC(free_pointer_cached_update, 1) + WINPR_ATTR_NODISCARD FREERDP_LOCAL POINTER_CACHED_UPDATE* copy_pointer_cached_update(rdpContext* context, const POINTER_CACHED_UPDATE* pointer); @@ -78,6 +83,7 @@ extern "C" POINTER_POSITION_UPDATE* pointer); WINPR_ATTR_MALLOC(free_pointer_position_update, 1) + WINPR_ATTR_NODISCARD FREERDP_LOCAL POINTER_POSITION_UPDATE* copy_pointer_position_update(rdpContext* context, const POINTER_POSITION_UPDATE* pointer); @@ -85,6 +91,7 @@ extern "C" POINTER_SYSTEM_UPDATE* pointer); WINPR_ATTR_MALLOC(free_pointer_system_update, 1) + WINPR_ATTR_NODISCARD FREERDP_LOCAL POINTER_SYSTEM_UPDATE* copy_pointer_system_update(rdpContext* context, const POINTER_SYSTEM_UPDATE* pointer); diff --git a/libfreerdp/codec/bulk.h b/libfreerdp/codec/bulk.h index fece0d669..fd229e97e 100644 --- a/libfreerdp/codec/bulk.h +++ b/libfreerdp/codec/bulk.h @@ -42,6 +42,7 @@ FREERDP_LOCAL void bulk_reset(rdpBulk* WINPR_RESTRICT bulk); FREERDP_LOCAL void bulk_free(rdpBulk* bulk); WINPR_ATTR_MALLOC(bulk_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpBulk* bulk_new(rdpContext* context); #endif /* FREERDP_LIB_CORE_BULK_H */ diff --git a/libfreerdp/codec/dsp_ffmpeg.h b/libfreerdp/codec/dsp_ffmpeg.h index 973e3716e..20c584c20 100644 --- a/libfreerdp/codec/dsp_ffmpeg.h +++ b/libfreerdp/codec/dsp_ffmpeg.h @@ -35,7 +35,9 @@ void freerdp_dsp_ffmpeg_context_free(FREERDP_DSP_CONTEXT* context); WINPR_ATTR_MALLOC(freerdp_dsp_ffmpeg_context_free, 1) +WINPR_ATTR_NODISCARD FREERDP_DSP_CONTEXT* freerdp_dsp_ffmpeg_context_new(BOOL encode); + BOOL freerdp_dsp_ffmpeg_supports_format(const AUDIO_FORMAT* format, BOOL encode); BOOL freerdp_dsp_ffmpeg_encode(FREERDP_DSP_CONTEXT* context, const AUDIO_FORMAT* srcFormat, const BYTE* data, size_t length, wStream* out); diff --git a/libfreerdp/codec/region.c b/libfreerdp/codec/region.c index d2d3353be..69a9f94a6 100644 --- a/libfreerdp/codec/region.c +++ b/libfreerdp/codec/region.c @@ -204,6 +204,7 @@ void region16_clear(REGION16* region) } WINPR_ATTR_MALLOC(freeRegion, 1) +WINPR_ATTR_NODISCARD static REGION16_DATA* allocateRegion(size_t nbItems) { REGION16_DATA* data = calloc(1, sizeof(REGION16_DATA)); diff --git a/libfreerdp/core/aad.c b/libfreerdp/core/aad.c index 6b052b057..8ac26874d 100644 --- a/libfreerdp/core/aad.c +++ b/libfreerdp/core/aad.c @@ -1013,6 +1013,7 @@ WINPR_JSON* freerdp_utils_aad_get_wellknown_custom_object(rdpContext* context, c } WINPR_ATTR_MALLOC(WINPR_JSON_Delete, 1) +WINPR_ATTR_NODISCARD WINPR_JSON* freerdp_utils_aad_get_wellknown(wLog* log, const char* base, const char* tenantid) { WINPR_ASSERT(base); diff --git a/libfreerdp/core/aad.h b/libfreerdp/core/aad.h index 38e843d43..fc1f21b2d 100644 --- a/libfreerdp/core/aad.h +++ b/libfreerdp/core/aad.h @@ -42,6 +42,7 @@ FREERDP_LOCAL AAD_STATE aad_get_state(rdpAad* aad); FREERDP_LOCAL void aad_free(rdpAad* aad); WINPR_ATTR_MALLOC(aad_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpAad* aad_new(rdpContext* context); #endif /* FREERDP_LIB_CORE_AAD_H */ diff --git a/libfreerdp/core/autodetect.h b/libfreerdp/core/autodetect.h index 77da5ac8b..367cd9fe7 100644 --- a/libfreerdp/core/autodetect.h +++ b/libfreerdp/core/autodetect.h @@ -35,6 +35,7 @@ FREERDP_LOCAL void autodetect_free(rdpAutoDetect* autodetect); WINPR_ATTR_MALLOC(autodetect_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpAutoDetect* autodetect_new(rdpContext* context); FREERDP_LOCAL state_run_t autodetect_recv_request_packet(rdpAutoDetect* autodetect, diff --git a/libfreerdp/core/client.h b/libfreerdp/core/client.h index be69e5692..8361bf914 100644 --- a/libfreerdp/core/client.h +++ b/libfreerdp/core/client.h @@ -114,6 +114,7 @@ struct rdp_channels FREERDP_LOCAL void freerdp_channels_free(rdpChannels* channels); WINPR_ATTR_MALLOC(freerdp_channels_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpChannels* freerdp_channels_new(freerdp* instance); FREERDP_LOCAL UINT freerdp_channels_disconnect(rdpChannels* channels, freerdp* instance); diff --git a/libfreerdp/core/credssp_auth.h b/libfreerdp/core/credssp_auth.h index 8d9fcbfe0..061acb040 100644 --- a/libfreerdp/core/credssp_auth.h +++ b/libfreerdp/core/credssp_auth.h @@ -35,6 +35,7 @@ typedef struct rdp_credssp_auth rdpCredsspAuth; FREERDP_LOCAL void credssp_auth_free(rdpCredsspAuth* auth); WINPR_ATTR_MALLOC(credssp_auth_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpCredsspAuth* credssp_auth_new(const rdpContext* context); FREERDP_LOCAL BOOL credssp_auth_init(rdpCredsspAuth* auth, TCHAR* pkg_name, diff --git a/libfreerdp/core/fastpath.h b/libfreerdp/core/fastpath.h index 9b34ce7c4..c4d9851e2 100644 --- a/libfreerdp/core/fastpath.h +++ b/libfreerdp/core/fastpath.h @@ -140,9 +140,11 @@ FREERDP_LOCAL BOOL fastpath_send_multiple_input_pdu(rdpFastPath* fastpath, wStre FREERDP_LOCAL BOOL fastpath_send_input_pdu(rdpFastPath* fastpath, wStream* s, UINT16 sec_flags); WINPR_ATTR_MALLOC(Stream_Release, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL wStream* fastpath_update_pdu_init(rdpFastPath* fastpath); WINPR_ATTR_MALLOC(Stream_Free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL wStream* fastpath_update_pdu_init_new(rdpFastPath* fastpath); FREERDP_LOCAL BOOL fastpath_send_update_pdu(rdpFastPath* fastpath, BYTE updateCode, wStream* s, BOOL skipCompression); diff --git a/libfreerdp/core/gateway/http.h b/libfreerdp/core/gateway/http.h index 92ce114e7..6070f6200 100644 --- a/libfreerdp/core/gateway/http.h +++ b/libfreerdp/core/gateway/http.h @@ -56,6 +56,7 @@ typedef struct s_http_context HttpContext; FREERDP_LOCAL void http_context_free(HttpContext* context); WINPR_ATTR_MALLOC(http_context_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL HttpContext* http_context_new(void); FREERDP_LOCAL BOOL http_context_set_method(HttpContext* context, const char* Method); @@ -96,6 +97,7 @@ typedef struct s_http_request HttpRequest; FREERDP_LOCAL void http_request_free(HttpRequest* request); WINPR_ATTR_MALLOC(http_request_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL HttpRequest* http_request_new(void); FREERDP_LOCAL BOOL http_request_set_method(HttpRequest* request, const char* Method); @@ -121,9 +123,11 @@ typedef struct s_http_response HttpResponse; FREERDP_LOCAL void http_response_free(HttpResponse* response); WINPR_ATTR_MALLOC(http_response_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL HttpResponse* http_response_new(void); WINPR_ATTR_MALLOC(http_response_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL HttpResponse* http_response_recv(rdpTls* tls, BOOL readContentLength); FREERDP_LOCAL UINT16 http_response_get_status_code(const HttpResponse* response); diff --git a/libfreerdp/core/gateway/rdg.h b/libfreerdp/core/gateway/rdg.h index 29d1a220a..1d11b196c 100644 --- a/libfreerdp/core/gateway/rdg.h +++ b/libfreerdp/core/gateway/rdg.h @@ -32,6 +32,7 @@ typedef struct rdp_rdg rdpRdg; FREERDP_LOCAL void rdg_free(rdpRdg* rdg); WINPR_ATTR_MALLOC(rdg_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpRdg* rdg_new(rdpContext* context); FREERDP_LOCAL BIO* rdg_get_front_bio_and_take_ownership(rdpRdg* rdg); diff --git a/libfreerdp/core/gateway/rpc.h b/libfreerdp/core/gateway/rpc.h index a8912efab..152d482ab 100644 --- a/libfreerdp/core/gateway/rpc.h +++ b/libfreerdp/core/gateway/rpc.h @@ -783,6 +783,7 @@ FREERDP_LOCAL SSIZE_T rpc_channel_read(RpcChannel* channel, wStream* s, size_t l FREERDP_LOCAL void rpc_channel_free(RpcChannel* channel); WINPR_ATTR_MALLOC(rpc_channel_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL RpcOutChannel* rpc_out_channel_new(rdpRpc* rpc, const GUID* guid); FREERDP_LOCAL int rpc_out_channel_replacement_connect(RpcOutChannel* outChannel, uint32_t timeout); @@ -800,6 +801,7 @@ FREERDP_LOCAL BOOL rpc_connect(rdpRpc* rpc, UINT32 timeout); FREERDP_LOCAL void rpc_free(rdpRpc* rpc); WINPR_ATTR_MALLOC(rpc_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpRpc* rpc_new(rdpTransport* transport); #endif /* FREERDP_LIB_CORE_GATEWAY_RPC_H */ diff --git a/libfreerdp/core/gateway/rpc_client.h b/libfreerdp/core/gateway/rpc_client.h index 4e075b8a7..d827be260 100644 --- a/libfreerdp/core/gateway/rpc_client.h +++ b/libfreerdp/core/gateway/rpc_client.h @@ -31,6 +31,7 @@ FREERDP_LOCAL RpcClientCall* rpc_client_call_find_by_id(RpcClient* client, UINT3 FREERDP_LOCAL void rpc_client_call_free(RpcClientCall* client_call); WINPR_ATTR_MALLOC(rpc_client_call_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL RpcClientCall* rpc_client_call_new(UINT32 CallId, UINT32 OpNum); FREERDP_LOCAL int rpc_in_channel_send_pdu(RpcInChannel* inChannel, const BYTE* buffer, @@ -46,6 +47,7 @@ FREERDP_LOCAL BOOL rpc_client_write_call(rdpRpc* rpc, wStream* s, UINT16 opnum); FREERDP_LOCAL void rpc_client_free(RpcClient* client); WINPR_ATTR_MALLOC(rpc_client_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL RpcClient* rpc_client_new(rdpContext* context, UINT32 max_recv_frag); #endif /* FREERDP_LIB_CORE_GATEWAY_RPC_CLIENT_H */ diff --git a/libfreerdp/core/gateway/rts.c b/libfreerdp/core/gateway/rts.c index 353a8403b..592348d27 100644 --- a/libfreerdp/core/gateway/rts.c +++ b/libfreerdp/core/gateway/rts.c @@ -600,6 +600,7 @@ static void rts_context_elem_free(p_cont_elem_t* ptr) } WINPR_ATTR_MALLOC(rts_context_elem_free, 1) +WINPR_ATTR_NODISCARD static p_cont_elem_t* rts_context_elem_new(size_t count) { p_cont_elem_t* ctx = calloc(count, sizeof(p_cont_elem_t)); diff --git a/libfreerdp/core/gateway/tsg.h b/libfreerdp/core/gateway/tsg.h index 81b50a7e5..6f01799f4 100644 --- a/libfreerdp/core/gateway/tsg.h +++ b/libfreerdp/core/gateway/tsg.h @@ -102,6 +102,7 @@ typedef enum FREERDP_LOCAL void tsg_free(rdpTsg* tsg); WINPR_ATTR_MALLOC(tsg_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpTsg* tsg_new(rdpTransport* transport); FREERDP_LOCAL BOOL tsg_proxy_begin(rdpTsg* tsg); diff --git a/libfreerdp/core/gateway/websocket.h b/libfreerdp/core/gateway/websocket.h index edaf152cd..463eace8b 100644 --- a/libfreerdp/core/gateway/websocket.h +++ b/libfreerdp/core/gateway/websocket.h @@ -55,6 +55,7 @@ typedef struct s_websocket_context websocket_context; FREERDP_LOCAL void websocket_context_free(websocket_context* context); WINPR_ATTR_MALLOC(websocket_context_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL websocket_context* websocket_context_new(void); FREERDP_LOCAL BOOL websocket_context_reset(websocket_context* context); @@ -67,6 +68,7 @@ FREERDP_LOCAL int websocket_context_read(websocket_context* encodingContext, BIO BYTE* pBuffer, size_t size); WINPR_ATTR_MALLOC(Stream_Free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL wStream* websocket_context_packet_new(size_t len, WEBSOCKET_OPCODE opcode, UINT32* pMaskingKey); diff --git a/libfreerdp/core/gateway/wst.h b/libfreerdp/core/gateway/wst.h index e0f2f7aa2..cb1bfa6b8 100644 --- a/libfreerdp/core/gateway/wst.h +++ b/libfreerdp/core/gateway/wst.h @@ -32,6 +32,7 @@ typedef struct rdp_wst rdpWst; FREERDP_LOCAL void wst_free(rdpWst* wst); WINPR_ATTR_MALLOC(wst_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpWst* wst_new(rdpContext* context); FREERDP_LOCAL BIO* wst_get_front_bio_and_take_ownership(rdpWst* wst); diff --git a/libfreerdp/core/heartbeat.h b/libfreerdp/core/heartbeat.h index 5fc6a1200..afe5d39cf 100644 --- a/libfreerdp/core/heartbeat.h +++ b/libfreerdp/core/heartbeat.h @@ -36,6 +36,7 @@ FREERDP_LOCAL state_run_t rdp_recv_heartbeat_packet(rdpRdp* rdp, wStream* s); FREERDP_LOCAL void heartbeat_free(rdpHeartbeat* heartbeat); WINPR_ATTR_MALLOC(heartbeat_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpHeartbeat* heartbeat_new(void); #define HEARTBEAT_TAG FREERDP_TAG("core.heartbeat") diff --git a/libfreerdp/core/input.h b/libfreerdp/core/input.h index 62388a8bd..09dc98d84 100644 --- a/libfreerdp/core/input.h +++ b/libfreerdp/core/input.h @@ -65,6 +65,7 @@ FREERDP_LOCAL BOOL input_register_client_callbacks(rdpInput* input); FREERDP_LOCAL void input_free(rdpInput* input); WINPR_ATTR_MALLOC(input_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpInput* input_new(rdpRdp* rdp); #endif /* FREERDP_LIB_CORE_INPUT_H */ diff --git a/libfreerdp/core/license.h b/libfreerdp/core/license.h index f8770bd8b..1be41a21a 100644 --- a/libfreerdp/core/license.h +++ b/libfreerdp/core/license.h @@ -67,6 +67,7 @@ FREERDP_LOCAL BOOL license_server_send_request(rdpLicense* license); FREERDP_LOCAL void license_free(rdpLicense* license); WINPR_ATTR_MALLOC(license_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpLicense* license_new(rdpRdp* rdp); #define LICENSE_TAG FREERDP_TAG("core.license") diff --git a/libfreerdp/core/mcs.h b/libfreerdp/core/mcs.h index a52e2e52c..38393b486 100644 --- a/libfreerdp/core/mcs.h +++ b/libfreerdp/core/mcs.h @@ -185,6 +185,7 @@ FREERDP_LOCAL BOOL mcs_client_begin(rdpMcs* mcs); FREERDP_LOCAL void mcs_free(rdpMcs* mcs); WINPR_ATTR_MALLOC(mcs_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpMcs* mcs_new(rdpContext* context); #endif /* FREERDP_LIB_CORE_MCS_H */ diff --git a/libfreerdp/core/message.h b/libfreerdp/core/message.h index a29486594..ce29527ec 100644 --- a/libfreerdp/core/message.h +++ b/libfreerdp/core/message.h @@ -136,6 +136,7 @@ FREERDP_LOCAL int update_message_queue_process_pending_messages(rdpUpdate* updat FREERDP_LOCAL void update_message_proxy_free(rdpUpdateProxy* message); WINPR_ATTR_MALLOC(update_message_proxy_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpUpdateProxy* update_message_proxy_new(rdpUpdate* update); /** diff --git a/libfreerdp/core/multitransport.h b/libfreerdp/core/multitransport.h index 4d312384a..5cd35a07a 100644 --- a/libfreerdp/core/multitransport.h +++ b/libfreerdp/core/multitransport.h @@ -54,6 +54,7 @@ FREERDP_LOCAL BOOL multitransport_client_send_response(rdpMultitransport* multi, FREERDP_LOCAL void multitransport_free(rdpMultitransport* multi); WINPR_ATTR_MALLOC(multitransport_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpMultitransport* multitransport_new(rdpRdp* rdp, UINT16 protocol); #endif /* FREERDP_LIB_CORE_MULTITRANSPORT_H */ diff --git a/libfreerdp/core/nego.h b/libfreerdp/core/nego.h index ab29c2f4c..d3bd1fe6a 100644 --- a/libfreerdp/core/nego.h +++ b/libfreerdp/core/nego.h @@ -109,6 +109,7 @@ FREERDP_LOCAL BOOL nego_send_negotiation_response(rdpNego* nego); FREERDP_LOCAL void nego_free(rdpNego* nego); WINPR_ATTR_MALLOC(nego_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpNego* nego_new(rdpTransport* transport); FREERDP_LOCAL void nego_init(rdpNego* nego); diff --git a/libfreerdp/core/nla.c b/libfreerdp/core/nla.c index f768f88b0..17d398aa0 100644 --- a/libfreerdp/core/nla.c +++ b/libfreerdp/core/nla.c @@ -1250,6 +1250,7 @@ static BOOL nla_credentialTypeValid(UINT32 type) } WINPR_ATTR_MALLOC(free, 1) +WINPR_ATTR_NODISCARD static MSV1_0_REMOTE_SUPPLEMENTAL_CREDENTIAL* nla_read_NtlmCreds(WINPR_ATTR_UNUSED rdpNla* nla, wStream* s) { diff --git a/libfreerdp/core/nla.h b/libfreerdp/core/nla.h index e5a4541ba..4ad840a8f 100644 --- a/libfreerdp/core/nla.h +++ b/libfreerdp/core/nla.h @@ -72,6 +72,7 @@ FREERDP_LOCAL BOOL nla_revert_to_self(rdpNla* nla); FREERDP_LOCAL void nla_free(rdpNla* nla); WINPR_ATTR_MALLOC(nla_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpNla* nla_new(rdpContext* context, rdpTransport* transport); FREERDP_LOCAL void nla_set_early_user_auth(rdpNla* nla, BOOL earlyUserAuth); diff --git a/libfreerdp/core/orders.c b/libfreerdp/core/orders.c index 298dea74c..8eb6c4f2d 100644 --- a/libfreerdp/core/orders.c +++ b/libfreerdp/core/orders.c @@ -2329,6 +2329,7 @@ static BOOL update_read_ellipse_cb_order(const char* orderName, wStream* s, /* Secondary Drawing Orders */ WINPR_ATTR_MALLOC(free_cache_bitmap_order, 2) +WINPR_ATTR_NODISCARD static CACHE_BITMAP_ORDER* update_read_cache_bitmap_order(rdpUpdate* update, wStream* s, BOOL compressed, UINT16 flags) { @@ -2449,6 +2450,7 @@ BOOL update_write_cache_bitmap_order(wStream* s, const CACHE_BITMAP_ORDER* cache } WINPR_ATTR_MALLOC(free_cache_bitmap_v2_order, 2) +WINPR_ATTR_NODISCARD static CACHE_BITMAP_V2_ORDER* update_read_cache_bitmap_v2_order(rdpUpdate* update, wStream* s, BOOL compressed, UINT16 flags) { @@ -2634,6 +2636,7 @@ BOOL update_write_cache_bitmap_v2_order(wStream* s, CACHE_BITMAP_V2_ORDER* cache } WINPR_ATTR_MALLOC(free_cache_bitmap_v3_order, 2) +WINPR_ATTR_NODISCARD static CACHE_BITMAP_V3_ORDER* update_read_cache_bitmap_v3_order(rdpUpdate* update, wStream* s, UINT16 flags) { @@ -2742,6 +2745,7 @@ BOOL update_write_cache_bitmap_v3_order(wStream* s, CACHE_BITMAP_V3_ORDER* cache } WINPR_ATTR_MALLOC(free_cache_color_table_order, 2) +WINPR_ATTR_NODISCARD static CACHE_COLOR_TABLE_ORDER* update_read_cache_color_table_order(rdpUpdate* update, wStream* s, WINPR_ATTR_UNUSED UINT16 flags) { diff --git a/libfreerdp/core/rdp.h b/libfreerdp/core/rdp.h index e66d005b5..8a8a873a7 100644 --- a/libfreerdp/core/rdp.h +++ b/libfreerdp/core/rdp.h @@ -223,7 +223,14 @@ FREERDP_LOCAL BOOL rdp_read_share_data_header(rdpRdp* rdp, wStream* s, UINT16* l UINT32* share_id, BYTE* compressed_type, UINT16* compressed_len); +FREERDP_LOCAL BOOL rdp_send(rdpRdp* rdp, wStream* s, UINT16 channelId, UINT16 sec_flags); + +WINPR_ATTR_MALLOC(rdp_send, 2) +WINPR_ATTR_NODISCARD FREERDP_LOCAL wStream* rdp_send_stream_init(rdpRdp* rdp, UINT16* sec_flags); + +WINPR_ATTR_MALLOC(Stream_Release, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL wStream* rdp_send_stream_pdu_init(rdpRdp* rdp, UINT16* sec_flags); FREERDP_LOCAL BOOL rdp_read_header(rdpRdp* rdp, wStream* s, UINT16* length, UINT16* channel_id); @@ -233,20 +240,26 @@ FREERDP_LOCAL BOOL rdp_write_header(rdpRdp* rdp, wStream* s, size_t length, UINT FREERDP_LOCAL BOOL rdp_send_pdu(rdpRdp* rdp, wStream* s, UINT16 type, UINT16 channel_id, UINT16 sec_flags); -FREERDP_LOCAL wStream* rdp_data_pdu_init(rdpRdp* rdp, UINT16* sec_flags); FREERDP_LOCAL BOOL rdp_send_data_pdu(rdpRdp* rdp, wStream* s, BYTE type, UINT16 channel_id, UINT16 sec_flags); -FREERDP_LOCAL state_run_t rdp_recv_data_pdu(rdpRdp* rdp, wStream* s); -FREERDP_LOCAL BOOL rdp_send(rdpRdp* rdp, wStream* s, UINT16 channelId, UINT16 sec_flags); +WINPR_ATTR_MALLOC(rdp_send_data_pdu, 2) +WINPR_ATTR_NODISCARD +FREERDP_LOCAL wStream* rdp_data_pdu_init(rdpRdp* rdp, UINT16* sec_flags); + +FREERDP_LOCAL state_run_t rdp_recv_data_pdu(rdpRdp* rdp, wStream* s); FREERDP_LOCAL BOOL rdp_send_channel_data(rdpRdp* rdp, UINT16 channelId, const BYTE* data, size_t size); FREERDP_LOCAL BOOL rdp_channel_send_packet(rdpRdp* rdp, UINT16 channelId, size_t totalSize, UINT32 flags, const BYTE* data, size_t chunkSize); -FREERDP_LOCAL wStream* rdp_message_channel_pdu_init(rdpRdp* rdp, UINT16* sec_flags); FREERDP_LOCAL BOOL rdp_send_message_channel_pdu(rdpRdp* rdp, wStream* s, UINT16 sec_flags); + +WINPR_ATTR_MALLOC(rdp_send_message_channel_pdu, 2) +WINPR_ATTR_NODISCARD +FREERDP_LOCAL wStream* rdp_message_channel_pdu_init(rdpRdp* rdp, UINT16* sec_flags); + FREERDP_LOCAL state_run_t rdp_recv_message_channel_pdu(rdpRdp* rdp, wStream* s, UINT16 securityFlags); diff --git a/libfreerdp/core/rdstls.h b/libfreerdp/core/rdstls.h index 952f469a1..5cf5574f0 100644 --- a/libfreerdp/core/rdstls.h +++ b/libfreerdp/core/rdstls.h @@ -29,6 +29,7 @@ FREERDP_LOCAL SSIZE_T rdstls_parse_pdu(wLog* log, wStream* s); FREERDP_LOCAL void rdstls_free(rdpRdstls* rdstls); WINPR_ATTR_MALLOC(rdstls_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpRdstls* rdstls_new(rdpContext* context, rdpTransport* transport); FREERDP_LOCAL int rdstls_authenticate(rdpRdstls* rdstls); diff --git a/libfreerdp/core/server.h b/libfreerdp/core/server.h index ccd4bd335..f9a6eb6ce 100644 --- a/libfreerdp/core/server.h +++ b/libfreerdp/core/server.h @@ -268,6 +268,7 @@ FREERDP_LOCAL BOOL WINAPI FreeRDP_WTSLogonUser(HANDLE hServer, LPCSTR username, FREERDP_LOCAL void server_channel_common_free(rdpPeerChannel*); WINPR_ATTR_MALLOC(server_channel_common_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpPeerChannel* server_channel_common_new(freerdp_peer* client, UINT16 index, UINT32 channelId, size_t chunkSize, const wObject* callback, const char* name); diff --git a/libfreerdp/core/settings.c b/libfreerdp/core/settings.c index ea1d986dc..993670e7b 100644 --- a/libfreerdp/core/settings.c +++ b/libfreerdp/core/settings.c @@ -421,6 +421,7 @@ static void alloc_free(UINT32** ptr) } WINPR_ATTR_MALLOC(alloc_free, 1) +WINPR_ATTR_NODISCARD static UINT32** alloc_array(size_t count) { // NOLINTNEXTLINE(clang-analyzer-unix.MallocSizeof) diff --git a/libfreerdp/core/timer.h b/libfreerdp/core/timer.h index 0234cd96d..85fc2a7a6 100644 --- a/libfreerdp/core/timer.h +++ b/libfreerdp/core/timer.h @@ -28,6 +28,7 @@ typedef struct freerdp_timer_s FreeRDPTimer; FREERDP_LOCAL void freerdp_timer_free(FreeRDPTimer* timer); WINPR_ATTR_MALLOC(freerdp_timer_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL FreeRDPTimer* freerdp_timer_new(rdpRdp* rdp); FREERDP_LOCAL bool freerdp_timer_poll(FreeRDPTimer* timer); diff --git a/libfreerdp/core/transport.h b/libfreerdp/core/transport.h index 153600b0d..5f786ee67 100644 --- a/libfreerdp/core/transport.h +++ b/libfreerdp/core/transport.h @@ -54,7 +54,10 @@ typedef enum typedef state_run_t (*TransportRecv)(rdpTransport* transport, wStream* stream, void* extra); +WINPR_ATTR_MALLOC(Stream_Release, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL wStream* transport_send_stream_init(rdpTransport* transport, size_t size); + FREERDP_LOCAL BOOL transport_connect(rdpTransport* transport, const char* hostname, UINT16 port, DWORD timeout); FREERDP_LOCAL BOOL transport_connect_childsession(rdpTransport* transport); @@ -140,6 +143,8 @@ FREERDP_LOCAL rdpTls* transport_get_tls(rdpTransport* transport); FREERDP_LOCAL BOOL transport_set_tsg(rdpTransport* transport, rdpTsg* tsg); FREERDP_LOCAL rdpTsg* transport_get_tsg(rdpTransport* transport); +WINPR_ATTR_MALLOC(Stream_Release, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL wStream* transport_take_from_pool(rdpTransport* transport, size_t size); FREERDP_LOCAL UINT64 transport_get_bytes_sent(rdpTransport* transport, BOOL resetCount); @@ -166,6 +171,7 @@ transport_connect_layer(rdpTransport* transport, const char* hostname, int port, FREERDP_LOCAL void transport_free(rdpTransport* transport); WINPR_ATTR_MALLOC(transport_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpTransport* transport_new(rdpContext* context); FREERDP_LOCAL void transport_set_early_user_auth_mode(rdpTransport* transport, BOOL EUAMode); diff --git a/libfreerdp/core/update.h b/libfreerdp/core/update.h index 1c883fdc1..acd84e9ec 100644 --- a/libfreerdp/core/update.h +++ b/libfreerdp/core/update.h @@ -175,6 +175,7 @@ static inline rdp_secondary_update_internal* secondary_update_cast(rdpSecondaryU FREERDP_LOCAL void update_free(rdpUpdate* update); WINPR_ATTR_MALLOC(update_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpUpdate* update_new(rdpRdp* rdp); FREERDP_LOCAL void update_reset_state(rdpUpdate* update); @@ -186,28 +187,36 @@ 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) +WINPR_ATTR_NODISCARD FREERDP_LOCAL BITMAP_UPDATE* update_read_bitmap_update(rdpUpdate* update, wStream* s); WINPR_ATTR_MALLOC(free_palette_update, 2) +WINPR_ATTR_NODISCARD FREERDP_LOCAL PALETTE_UPDATE* update_read_palette(rdpUpdate* update, wStream* s); WINPR_ATTR_MALLOC(free_pointer_system_update, 2) +WINPR_ATTR_NODISCARD FREERDP_LOCAL POINTER_SYSTEM_UPDATE* update_read_pointer_system(rdpUpdate* update, wStream* s); WINPR_ATTR_MALLOC(free_pointer_position_update, 2) +WINPR_ATTR_NODISCARD FREERDP_LOCAL POINTER_POSITION_UPDATE* update_read_pointer_position(rdpUpdate* update, wStream* s); WINPR_ATTR_MALLOC(free_pointer_color_update, 2) +WINPR_ATTR_NODISCARD FREERDP_LOCAL POINTER_COLOR_UPDATE* update_read_pointer_color(rdpUpdate* update, wStream* s, BYTE xorBpp); WINPR_ATTR_MALLOC(free_pointer_large_update, 2) +WINPR_ATTR_NODISCARD FREERDP_LOCAL POINTER_LARGE_UPDATE* update_read_pointer_large(rdpUpdate* update, wStream* s); WINPR_ATTR_MALLOC(free_pointer_new_update, 2) +WINPR_ATTR_NODISCARD FREERDP_LOCAL POINTER_NEW_UPDATE* update_read_pointer_new(rdpUpdate* update, wStream* s); WINPR_ATTR_MALLOC(free_pointer_cached_update, 2) +WINPR_ATTR_NODISCARD 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.h b/libfreerdp/crypto/certificate.h index 6cc656ce3..86c112ca1 100644 --- a/libfreerdp/crypto/certificate.h +++ b/libfreerdp/crypto/certificate.h @@ -41,6 +41,7 @@ #define BB_RSA_SIGNATURE_BLOB 8 WINPR_ATTR_MALLOC(freerdp_certificate_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpCertificate* freerdp_certificate_new_from_x509(const X509* xcert, const STACK_OF(X509) * chain); @@ -50,6 +51,7 @@ FREERDP_LOCAL SSIZE_T freerdp_certificate_write_server_cert(const rdpCertificate UINT32 dwVersion, wStream* s); WINPR_ATTR_MALLOC(freerdp_certificate_free, 1) +WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpCertificate* freerdp_certificate_clone(const rdpCertificate* certificate); FREERDP_LOCAL const rdpCertInfo* freerdp_certificate_get_info(const rdpCertificate* certificate); diff --git a/libfreerdp/crypto/tls.h b/libfreerdp/crypto/tls.h index 99e5224b1..9ba0c85c9 100644 --- a/libfreerdp/crypto/tls.h +++ b/libfreerdp/crypto/tls.h @@ -122,6 +122,7 @@ extern "C" FREERDP_LOCAL void freerdp_tls_free(rdpTls* tls); WINPR_ATTR_MALLOC(freerdp_tls_free, 1) + WINPR_ATTR_NODISCARD FREERDP_LOCAL rdpTls* freerdp_tls_new(rdpContext* context); #ifdef __cplusplus diff --git a/libfreerdp/utils/helpers.c b/libfreerdp/utils/helpers.c index c2c001363..85faa747b 100644 --- a/libfreerdp/utils/helpers.c +++ b/libfreerdp/utils/helpers.c @@ -28,6 +28,7 @@ #if !defined(WITH_FULL_CONFIG_PATH) WINPR_ATTR_MALLOC(free, 1) +WINPR_ATTR_NODISCARD static char* freerdp_settings_get_legacy_config_path(const char* filename) { char product[sizeof(FREERDP_PRODUCT_STRING)] = { 0 };