[lttng-dev] [PATCH lttng-tools 16/24] Fix: illegal memory access in session_create

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Tue May 17 01:42:55 UTC 2016


Found by Coverity:

CID 1323138 (#1 of 2): Buffer not null terminated
(BUFFER_SIZE_WARNING)3. buffer_size_warning: Calling strncpy with a
maximum size argument of 64 bytes on destination array session->hostname
of size 64 bytes might leave the destination string unterminated.

CID 1323138 (#2 of 2): Buffer not null terminated
(BUFFER_SIZE_WARNING)3. buffer_size_warning: Calling strncpy with a
maximum size argument of 255 bytes on destination array
session->session_name of size 255 bytes might leave the destination
string unterminated.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
---
 src/bin/lttng-relayd/session.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/src/bin/lttng-relayd/session.c b/src/bin/lttng-relayd/session.c
index d1c2098..9702bd2 100644
--- a/src/bin/lttng-relayd/session.c
+++ b/src/bin/lttng-relayd/session.c
@@ -46,11 +46,16 @@ struct relay_session *session_create(const char *session_name,
 		PERROR("relay session zmalloc");
 		goto error;
 	}
-
+	if (lttng_strncpy(session->session_name, session_name,
+			sizeof(session->session_name))) {
+		goto error;
+	}
+	if (lttng_strncpy(session->hostname, hostname,
+			sizeof(session->hostname))) {
+		goto error;
+	}
 	session->ctf_traces_ht = lttng_ht_new(0, LTTNG_HT_TYPE_STRING);
 	if (!session->ctf_traces_ht) {
-		free(session);
-		session = NULL;
 		goto error;
 	}
 
@@ -67,17 +72,15 @@ struct relay_session *session_create(const char *session_name,
 	pthread_mutex_init(&session->reflock, NULL);
 	pthread_mutex_init(&session->recv_list_lock, NULL);
 
-	strncpy(session->session_name, session_name,
-			sizeof(session->session_name));
-	strncpy(session->hostname, hostname,
-			sizeof(session->hostname));
 	session->live_timer = live_timer;
 	session->snapshot = snapshot;
 
 	lttng_ht_add_unique_u64(sessions_ht, &session->session_n);
+	return session;
 
 error:
-	return session;
+	free(session);
+	return NULL;
 }
 
 /* Should be called with RCU read-side lock held. */
-- 
2.1.4



More information about the lttng-dev mailing list