Fix: systematic overwrite of union values on add context
authorJonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Thu, 10 Mar 2016 20:04:35 +0000 (15:04 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Sat, 12 Mar 2016 18:35:22 +0000 (13:35 -0500)
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 <jonathan.rajotte-julien@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/lib/lttng-ctl/lttng-ctl.c

index 61396eb461958b179f5975f1e19f3739da13bac9..3bc709a68ad2deeb573584297146f468277e8643 100644 (file)
@@ -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:
This page took 0.02579 seconds and 4 git commands to generate.