X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fcmd.c;h=58506b2b225e5e0e306d9fad8682013e52a0723d;hb=7fa2082ed250230b7823e01b144aa6b580d4b2f5;hp=c1e33693f913076d58d8dba938975be23e10d4bc;hpb=bda32d5621dc58f49d1e77b6998b53fc976d35d4;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/cmd.c b/src/bin/lttng-sessiond/cmd.c index c1e33693f..58506b2b2 100644 --- a/src/bin/lttng-sessiond/cmd.c +++ b/src/bin/lttng-sessiond/cmd.c @@ -18,6 +18,7 @@ #define _GNU_SOURCE #define _LGPL_SOURCE #include +#include #include #include #include @@ -939,11 +940,21 @@ int cmd_enable_channel(struct ltt_session *session, int ret; struct ltt_ust_session *usess = session->ust_session; struct lttng_ht *chan_ht; + size_t len; assert(session); assert(attr); assert(domain); + len = strnlen(attr->name, sizeof(attr->name)); + + /* Validate channel name */ + if (attr->name[0] == '.' || + memchr(attr->name, '/', len) != NULL) { + ret = LTTNG_ERR_INVALID_CHANNEL_NAME; + goto end; + } + DBG("Enabling channel %s for session %s", attr->name, session->name); rcu_read_lock(); @@ -1024,6 +1035,7 @@ int cmd_enable_channel(struct ltt_session *session, error: rcu_read_unlock(); +end: return ret; } @@ -2967,11 +2979,13 @@ static int record_kernel_snapshot(struct ltt_kernel_session *ksess, } ret = LTTNG_OK; + goto end; error_snapshot: /* Clean up copied sockets so this output can use some other later on. */ consumer_destroy_output_sockets(output->consumer); error: +end: return ret; }