From: Jérémie Galarneau Date: Sun, 15 Sep 2019 18:27:40 +0000 (-0400) Subject: sessiond: fix: strncpy called with source length X-Git-Tag: v2.10.8~2 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=171829b7b967fea8134c6204c9b87fc3324fb2c7;p=lttng-tools.git sessiond: fix: strncpy called with source length strncpy is called with the source's length in two cases in the session save code. Use the destination and remaining destination length as intended by the API. Signed-off-by: Jérémie Galarneau --- diff --git a/src/bin/lttng-sessiond/save.c b/src/bin/lttng-sessiond/save.c index c51338e17..789f59e49 100644 --- a/src/bin/lttng-sessiond/save.c +++ b/src/bin/lttng-sessiond/save.c @@ -1891,7 +1891,7 @@ int save_session(struct ltt_session *session, struct lttng_save_session_attr *attr, lttng_sock_cred *creds) { int ret, fd = -1; - char config_file_path[PATH_MAX]; + char config_file_path[LTTNG_PATH_MAX]; size_t len; struct config_writer *writer = NULL; size_t session_name_len; @@ -1919,7 +1919,7 @@ int save_session(struct ltt_session *session, ret = LTTNG_ERR_SET_URL; goto end; } - strncpy(config_file_path, provided_path, len); + strncpy(config_file_path, provided_path, sizeof(config_file_path)); } else { ssize_t ret_len; char *home_dir = utils_get_user_home_dir( @@ -1963,7 +1963,7 @@ int save_session(struct ltt_session *session, * was done just above. */ config_file_path[len++] = '/'; - strncpy(config_file_path + len, session->name, session_name_len); + strncpy(config_file_path + len, session->name, sizeof(config_file_path) - len); len += session_name_len; strcpy(config_file_path + len, DEFAULT_SESSION_CONFIG_FILE_EXTENSION); len += sizeof(DEFAULT_SESSION_CONFIG_FILE_EXTENSION);