Fix: relayd: disallow 0-length session names for 2.4+ peers
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 8 Nov 2019 22:45:20 +0000 (17:45 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 8 Nov 2019 22:55:06 +0000 (17:55 -0500)
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 <jeremie.galarneau@efficios.com>
src/bin/lttng-relayd/cmd-2-11.c
src/bin/lttng-relayd/cmd-2-4.c
src/bin/lttng-relayd/session.h

index 0da8d2834dafe4c697c4d05024165fb0aa9da431..4b6f39120db0b84cd1170880c27750d854436877 100644 (file)
@@ -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;
index e20a838da932051572ebd2db984bf3b9eddaa408..008be4cf0db901b038e98f3398dc097861847ea4 100644 (file)
@@ -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);
 
index 288672dcc193312d2e72e13048cc68ec00ec4d6e..8d60ed95fe660e71c51c8af849853c566d49ea09 100644 (file)
@@ -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];
This page took 0.034372 seconds and 4 git commands to generate.