OSDN Git Service

perf event-parse: Use fixed size string for comms
authorChris Phlipot <cphlipot0@gmail.com>
Thu, 30 Aug 2018 02:19:50 +0000 (19:19 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 30 Aug 2018 17:51:45 +0000 (14:51 -0300)
commitc9f23d2bc21cb263ae931f3e264d003d746107bb
treeae9b04c4000e4131a043f79aa67ba2667dabac25
parenta72f64261359b7451f8478f2a2bf357b4e6c757f
perf event-parse: Use fixed size string for comms

Some implementations of libc do not support the 'm' width modifier as
part of the scanf string format specifier. This can cause the parsing to
fail.  Since the parser never checks if the scanf parsing was
successesful, this can result in a crash.

Change the comm string to be allocated as a fixed size instead of
dynamically using 'm' scanf width modifier. This can be safely done
since comm size is limited to 16 bytes by TASK_COMM_LEN within the
kernel.

This change prevents perf from crashing when linked against bionic as
well as reduces the total number of heap allocations and frees invoked
while accomplishing the same task.

Signed-off-by: Chris Phlipot <cphlipot0@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20180830021950.15563-1-cphlipot0@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/trace-event-parse.c