From: Jonathan Rajotte Date: Thu, 10 Mar 2016 20:04:35 +0000 (-0500) Subject: Fix: systematic overwrite of union values on add context X-Git-Tag: v2.8.0-rc1~78 X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=commitdiff_plain;h=46f44e2a0813922f2687464d6190d663e56c2711 Fix: systematic overwrite of union values on add context 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 --- 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: