From: Jérémie Galarneau Date: Fri, 8 Nov 2019 22:45:20 +0000 (-0500) Subject: Fix: relayd: disallow 0-length session names for 2.4+ peers X-Git-Tag: v2.12.0-rc1~246 X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=commitdiff_plain;h=e7f8eff3a01708a32fc2a475b88420ab21ed821f Fix: relayd: disallow 0-length session names for 2.4+ peers The group-by-session-name feature assumes sessions are named for peers more recent than 2.3. Enforce this assumption at session creation time. Signed-off-by: Jérémie Galarneau --- diff --git a/src/bin/lttng-relayd/cmd-2-11.c b/src/bin/lttng-relayd/cmd-2-11.c index 0da8d2834..4b6f39120 100644 --- a/src/bin/lttng-relayd/cmd-2-11.c +++ b/src/bin/lttng-relayd/cmd-2-11.c @@ -78,6 +78,10 @@ int cmd_create_session_2_11(const struct lttng_buffer_view *payload, ret = -ENAMETOOLONG; ERR("Length of session name (%" PRIu32 " bytes) received in create_session command exceeds maximum length (%d bytes)", header.session_name_len, LTTNG_NAME_MAX); goto error; + } else if (header.session_name_len == 0) { + ret = -EINVAL; + ERR("Illegal session name length of 0 received"); + goto error; } if (header.hostname_len > LTTNG_HOST_NAME_MAX) { ret = -ENAMETOOLONG; diff --git a/src/bin/lttng-relayd/cmd-2-4.c b/src/bin/lttng-relayd/cmd-2-4.c index e20a838da..008be4cf0 100644 --- a/src/bin/lttng-relayd/cmd-2-4.c +++ b/src/bin/lttng-relayd/cmd-2-4.c @@ -52,6 +52,10 @@ int cmd_create_session_2_4(const struct lttng_buffer_view *payload, ret = -ENAMETOOLONG; ERR("Session name too long"); goto error; + } else if (len == 0) { + ret = -EINVAL; + ERR("Session name can't be of length 0"); + goto error; } strncpy(session_name, session_info.session_name, LTTNG_NAME_MAX); diff --git a/src/bin/lttng-relayd/session.h b/src/bin/lttng-relayd/session.h index 288672dcc..8d60ed95f 100644 --- a/src/bin/lttng-relayd/session.h +++ b/src/bin/lttng-relayd/session.h @@ -53,6 +53,7 @@ struct relay_session { */ lttng_uuid sessiond_uuid; LTTNG_OPTIONAL(time_t) creation_time; + /* Must _not_ be empty for 2.4+ peers. */ char session_name[LTTNG_NAME_MAX]; char hostname[LTTNG_HOST_NAME_MAX]; char base_path[LTTNG_PATH_MAX];