From 46f44e2a0813922f2687464d6190d663e56c2711 Mon Sep 17 00:00:00 2001 From: Jonathan Rajotte Date: Thu, 10 Mar 2016 15:04:35 -0500 Subject: [PATCH] Fix: systematic overwrite of union values on add context MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Bug introduced in commit 2001793c1141e89b34e70efb28b27ec0cc8e6d47 The type and config fields of the lttng_event_perf_counter_ctx member of lttng_event_context union would always be set to zero. Signed-off-by: Jonathan Rajotte Signed-off-by: Jérémie Galarneau --- src/lib/lttng-ctl/lttng-ctl.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/lib/lttng-ctl/lttng-ctl.c b/src/lib/lttng-ctl/lttng-ctl.c index 61396eb46..3bc709a68 100644 --- a/src/lib/lttng-ctl/lttng-ctl.c +++ b/src/lib/lttng-ctl/lttng-ctl.c @@ -736,9 +736,16 @@ int lttng_add_context(struct lttng_handle *handle, memcpy(buf + provider_len, ctx_name, ctx_len); } memcpy(&lsm.u.context.ctx, ctx, sizeof(struct lttng_event_context)); - /* Don't leak application addresses to the sessiond. */ - lsm.u.context.ctx.u.app_ctx.provider_name = NULL; - lsm.u.context.ctx.u.app_ctx.ctx_name = NULL; + + if (ctx->ctx == LTTNG_EVENT_CONTEXT_APP_CONTEXT) { + /* + * Don't leak application addresses to the sessiond. + * This is only necessary when ctx is for an app ctx otherwise + * the values inside the union (type & config) are overwritten. + */ + lsm.u.context.ctx.u.app_ctx.provider_name = NULL; + lsm.u.context.ctx.u.app_ctx.ctx_name = NULL; + } ret = lttng_ctl_ask_sessiond_varlen_no_cmd_header(&lsm, buf, len, NULL); end: -- 2.34.1