From f1678a6ec739c349d5c3fc50ceb440c399a9f5ec Mon Sep 17 00:00:00 2001 From: Partha Pratim Mukherjee Date: Sat, 25 Jul 2015 13:25:19 +0530 Subject: [PATCH] Fix: set session should not set non-existent session MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit set-session does not check the existence of a session before setting it as the current session. Fix it so that it gives error for a non-existent session. Fixes #885 Signed-off-by: Partha Pratim Mukherjee Signed-off-by: Jérémie Galarneau --- src/bin/lttng/commands/set_session.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/bin/lttng/commands/set_session.c b/src/bin/lttng/commands/set_session.c index 3196f12bd..14fe9afd8 100644 --- a/src/bin/lttng/commands/set_session.c +++ b/src/bin/lttng/commands/set_session.c @@ -106,11 +106,34 @@ end: static int set_session(void) { int ret = CMD_SUCCESS; + int count, i; + unsigned int session_found = 0; + struct lttng_session *sessions; if (opt_session_name && strlen(opt_session_name) > NAME_MAX) { ERR("Session name too long. Length must be lower or equal to %d", NAME_MAX); ret = CMD_ERROR; + goto end; + } + + count = lttng_list_sessions(&sessions); + if (count < 0) { + ret = CMD_ERROR; + ERR("%s", lttng_strerror(count)); + goto end; + } + + for (i = 0; i < count; i++) { + if (strncmp(sessions[i].name, opt_session_name, NAME_MAX) == 0) { + session_found = 1; + break; + } + } + + if (!session_found) { + ERR("Session '%s' not found", opt_session_name); + ret = CMD_ERROR; goto error; } @@ -133,6 +156,8 @@ static int set_session(void) ret = CMD_SUCCESS; error: + free(sessions); +end: return ret; } -- 2.34.1