Fix: sessiond: g++ reports shm_path truncation issue
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Mon, 8 Jul 2024 15:50:01 +0000 (11:50 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 30 Jul 2024 01:26:50 +0000 (01:26 +0000)
On the CI, g++ reports:
  char* strncpy(char*, const char*, size_t)' specified bound 4096 equals destination size [-Wstringop-truncation]

The shm_path provided by liblttng-ctl is truncated to PATH_MAX
regardless of its contents.

LTTN_ERR_INVALID is returned if the shm_path is not null terminated.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: Ie369f2ee368c70e2b3b41c45a69da7e6d9fa45f8

src/bin/lttng-sessiond/cmd.cpp

index a0e9c49e62e7a0ae1eb39c22bc16e12e093a5ba4..2d081a9647e107389f29e29b9b5d63619a04b335 100644 (file)
@@ -5427,10 +5427,9 @@ int cmd_set_session_shm_path(const ltt_session::locked_ref& session, const char
                return LTTNG_ERR_SESSION_STARTED;
        }
 
-       strncpy(session->shm_path, shm_path, sizeof(session->shm_path));
-       session->shm_path[sizeof(session->shm_path) - 1] = '\0';
-
-       return LTTNG_OK;
+       /* Report an error if shm_path is too long or not null-terminated. */
+       const auto copy_ret = lttng_strncpy(session->shm_path, shm_path, sizeof(session->shm_path));
+       return copy_ret == 0 ? LTTNG_OK : LTTNG_ERR_INVALID;
 }
 
 /*
This page took 0.028127 seconds and 4 git commands to generate.