From: Jonathan Rajotte Date: Tue, 24 Sep 2019 15:24:17 +0000 (-0400) Subject: Fix: use newly created event filter for condition check X-Git-Tag: v2.11.0-rc4~7 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=6a007bc62c409062c645eecad06a866ef35d8f23;p=lttng-tools.git Fix: use newly created event filter for condition check The following commit introduced a regression while fixing the filter and filter_expression ownership. commit b0a23296344e57bd2e48e62ec2d7e0d8a38661bb Author: Jérémie Galarneau Date: Sat Jan 12 14:53:56 2019 -0500 Fix: leak of filter bytecode and expression on agent event re-enable The agent subsystem does not properly assume the clean-up of an event's filter bytecode and expression when a previously disabled event is re-enabled. This change ensures that the ownership of both the filter bytecode and expression is assumed by the agent subsystem and discarded when a matching event is found. Steps to reproduce the leak: $ lttng create $ lttng enable-event --python allo --filter 'a[42] == 241' $ lttng disable-event --python allo $ lttng enable-event --python allo --filter 'a[42] == 241' Signed-off-by: Jérémie Galarneau Setting the "filter" object to NULL prevents the call to add_filter_app_ctx when needed. We use the filter from the newly created event to perform the check and the call to add_filter_app_ctx. Fixes coverity #1399733 Signed-off-by: Jonathan Rajotte Signed-off-by: Jérémie Galarneau --- diff --git a/src/bin/lttng-sessiond/event.c b/src/bin/lttng-sessiond/event.c index f32db4429..a8b7646da 100644 --- a/src/bin/lttng-sessiond/event.c +++ b/src/bin/lttng-sessiond/event.c @@ -513,8 +513,9 @@ int event_agent_enable(struct ltt_ust_session *usess, created = 1; } - if (created && filter) { - ret = add_filter_app_ctx(filter, filter_expression, agt); + if (created && aevent->filter) { + ret = add_filter_app_ctx( + aevent->filter, aevent->filter_expression, agt); if (ret != LTTNG_OK) { goto error; }