From 15b7f18edeab2893c7c2f2905fbf646861c0ca6d Mon Sep 17 00:00:00 2001 From: matt335672 <30179339+matt335672@users.noreply.github.com> Date: Thu, 21 Oct 2021 15:24:39 +0100 Subject: [PATCH] Minor memory leaks found with valgrind --- vnc/vnc_clip.c | 1 + xrdp/xrdp_cache.c | 32 ++++++++++---------------------- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/vnc/vnc_clip.c b/vnc/vnc_clip.c index 1cfb1d06..ebbfae36 100644 --- a/vnc/vnc_clip.c +++ b/vnc/vnc_clip.c @@ -1107,6 +1107,7 @@ vnc_clip_open_clip_channel(struct vnc *v) s_mark_end(s); send_stream_to_clip_channel(v, s); + free_stream(s); /* Need to complete the startup handshake before we send formats */ v->vc->startup_complete = 1; } diff --git a/xrdp/xrdp_cache.c b/xrdp/xrdp_cache.c index ad242253..bef11113 100644 --- a/xrdp/xrdp_cache.c +++ b/xrdp/xrdp_cache.c @@ -120,8 +120,8 @@ xrdp_cache_create(struct xrdp_wm *owner, } /*****************************************************************************/ -void -xrdp_cache_delete(struct xrdp_cache *self) +static void +clear_all_cached_items(struct xrdp_cache *self) { int i; int j; @@ -165,7 +165,13 @@ xrdp_cache_delete(struct xrdp_cache *self) list16_deinit(&(self->crc16[i][j])); } } +} +/*****************************************************************************/ +void +xrdp_cache_delete(struct xrdp_cache *self) +{ + clear_all_cached_items(self); g_free(self); } @@ -176,30 +182,12 @@ xrdp_cache_reset(struct xrdp_cache *self, { struct xrdp_wm *wm; struct xrdp_session *session; - int i; - int j; - - /* free all the cached bitmaps */ - for (i = 0; i < XRDP_MAX_BITMAP_CACHE_ID; i++) - { - for (j = 0; j < XRDP_MAX_BITMAP_CACHE_IDX; j++) - { - xrdp_bitmap_delete(self->bitmap_items[i][j].bitmap); - } - } - - /* free all the cached font items */ - for (i = 0; i < 12; i++) - { - for (j = 0; j < 256; j++) - { - g_free(self->char_items[i][j].font_item.data); - } - } /* save these */ wm = self->wm; session = self->session; + /* De-allocate any allocated memory */ + clear_all_cached_items(self); /* set whole struct to zero */ g_memset(self, 0, sizeof(struct xrdp_cache)); /* set some stuff back */