From: Francis Deslauriers Date: Wed, 15 May 2019 21:55:31 +0000 (-0400) Subject: Fix: flt.utils.muxer: Potential memory leak X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=6c20f4a0c496cfac67ceabe876edc796929ffb64 Fix: flt.utils.muxer: Potential memory leak scan-build reports a potential memory leak of the muxer_upstream_msg_iter pointer allocated in the `muxer_msg_iter_add_upstream_msg_iter()` function if the `g_queue_new()` fails. So, free the muxer_upstream_msg_iter on the error path. Reported-by: scan-build - Potential leak of memory Signed-off-by: Francis Deslauriers Change-Id: Ia37a1be9525b357d063d5c5bd5623ddccbd4e29d Reviewed-on: https://review.lttng.org/c/babeltrace/+/1312 Tested-by: jenkins Reviewed-by: Jérémie Galarneau --- diff --git a/plugins/utils/muxer/muxer.c b/plugins/utils/muxer/muxer.c index ae08d0d7..47d790b3 100644 --- a/plugins/utils/muxer/muxer.c +++ b/plugins/utils/muxer/muxer.c @@ -147,7 +147,7 @@ struct muxer_upstream_msg_iter *muxer_msg_iter_add_upstream_msg_iter( if (!muxer_upstream_msg_iter) { BT_LOGE_STR("Failed to allocate one muxer's upstream message iterator wrapper."); - goto end; + goto error; } muxer_upstream_msg_iter->msg_iter = self_msg_iter; @@ -155,7 +155,7 @@ struct muxer_upstream_msg_iter *muxer_msg_iter_add_upstream_msg_iter( muxer_upstream_msg_iter->msgs = g_queue_new(); if (!muxer_upstream_msg_iter->msgs) { BT_LOGE_STR("Failed to allocate a GQueue."); - goto end; + goto error; } g_ptr_array_add(muxer_msg_iter->active_muxer_upstream_msg_iters, @@ -165,6 +165,12 @@ struct muxer_upstream_msg_iter *muxer_msg_iter_add_upstream_msg_iter( muxer_upstream_msg_iter, muxer_msg_iter, self_msg_iter); + goto end; + +error: + g_free(muxer_upstream_msg_iter); + muxer_upstream_msg_iter = NULL; + end: return muxer_upstream_msg_iter; }