From: Francis Deslauriers Date: Wed, 15 May 2019 19:43:44 +0000 (-0400) Subject: Fix: src.ctf.lttng-live: possible memory leak on error path X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=19bdff207149e8d07bfa141901b887b8d979896c Fix: src.ctf.lttng-live: possible memory leak on error path Free `struct lttng_live_component` if the graph is found to be already canceled and return the appropriate _END status. Reported-by: scan-build - Potential leak of memory. Signed-off-by: Francis Deslauriers Change-Id: I975e458ed4ce5dc3e50c9bf330a2f6953e5be535 Reviewed-on: https://review.lttng.org/c/babeltrace/+/1308 Tested-by: jenkins Reviewed-by: Philippe Proulx --- diff --git a/plugins/ctf/lttng-live/lttng-live.c b/plugins/ctf/lttng-live/lttng-live.c index ef33c776..d7c1b458 100644 --- a/plugins/ctf/lttng-live/lttng-live.c +++ b/plugins/ctf/lttng-live/lttng-live.c @@ -1471,6 +1471,9 @@ end: static void lttng_live_component_destroy_data(struct lttng_live_component *lttng_live) { + if (!lttng_live) { + return; + } if (lttng_live->params.url) { g_string_free(lttng_live->params.url, TRUE); } @@ -1576,25 +1579,30 @@ bt_self_component_status lttng_live_component_init( lttng_live = lttng_live_component_create(params); if (!lttng_live) { ret = BT_SELF_COMPONENT_STATUS_NOMEM; - goto end; + goto error; } lttng_live->self_comp = self_comp; if (lttng_live_graph_is_canceled(lttng_live)) { - goto end; + ret = BT_SELF_COMPONENT_STATUS_END; + goto error; } ret = bt_self_component_source_add_output_port( lttng_live->self_comp, "out", NULL, NULL); if (ret != BT_SELF_COMPONENT_STATUS_OK) { - goto end; + goto error; } bt_self_component_set_data( bt_self_component_source_as_self_component(self_comp), lttng_live); + goto end; +error: + lttng_live_component_destroy_data(lttng_live); + lttng_live = NULL; end: return ret; }