]> www.infradead.org Git - users/willy/linux.git/commitdiff
tracing: Use strncpy instead of memcpy when copying comm for hist triggers
authorTom Zanussi <tom.zanussi@linux.intel.com>
Tue, 5 Mar 2019 16:11:59 +0000 (10:11 -0600)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Tue, 5 Mar 2019 17:14:28 +0000 (12:14 -0500)
Because there may be random garbage beyond a string's null terminator,
code that might use the entire comm array e.g. histogram keys, can
give unexpected results if that garbage is copied in too, so avoid
that possibility by using strncpy instead of memcpy.

Link: http://lkml.kernel.org/r/1eb9f096a8086c3c82c7fc087c900005143cec54.1551802084.git.tom.zanussi@linux.intel.com
Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
kernel/trace/trace_events_hist.c

index c7774fa119a7c42f916cf3ceca5f066924cde978..ca46339f30090d84d72667b4207a8272d7fa1e9f 100644 (file)
@@ -2141,7 +2141,7 @@ static inline void save_comm(char *comm, struct task_struct *task)
                return;
        }
 
-       memcpy(comm, task->comm, TASK_COMM_LEN);
+       strncpy(comm, task->comm, TASK_COMM_LEN);
 }
 
 static void hist_elt_data_free(struct hist_elt_data *elt_data)
@@ -3557,7 +3557,7 @@ static bool cond_snapshot_update(struct trace_array *tr, void *cond_data)
        elt_data = context->elt->private_data;
        track_elt_data = track_data->elt.private_data;
        if (elt_data->comm)
-               memcpy(track_elt_data->comm, elt_data->comm, TASK_COMM_LEN);
+               strncpy(track_elt_data->comm, elt_data->comm, TASK_COMM_LEN);
 
        track_data->updated = true;