Skip to content

Commit

Permalink
perf probe: Fix argv array size in probe parser
Browse files Browse the repository at this point in the history
Since the syntax has been changed, probe definition needs
parameters less than MAX_PROBE_ARGS + 1 (probe-point +
arguments).

Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com>
Cc: systemtap <systemtap@sources.redhat.com>
Cc: DLE <dle-develop@lists.sourceforge.net>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Jim Keniston <jkenisto@us.ibm.com>
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Frank Ch. Eigler <fche@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jason Baron <jbaron@redhat.com>
Cc: K.Prasad <prasad@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
LKML-Reference: <20091201001943.10235.80367.stgit@harusame>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
  • Loading branch information
Masami Hiramatsu authored and Ingo Molnar committed Dec 1, 2009
1 parent 57d250d commit 74ca4c0
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions tools/perf/builtin-probe.c
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ static void parse_probe_point(char *arg, struct probe_point *pp)
/* Parse an event definition. Note that any error must die. */
static void parse_probe_event(const char *str)
{
char *argv[MAX_PROBE_ARGS + 2]; /* Event + probe + args */
char *argv[MAX_PROBE_ARGS + 1]; /* probe + args */
int argc, i;
struct probe_point *pp = &session.probes[session.nr_probe];

Expand All @@ -169,6 +169,9 @@ static void parse_probe_event(const char *str)
/* Add an argument */
if (*str != '\0') {
const char *s = str;
/* Check the limit number of arguments */
if (argc == MAX_PROBE_ARGS + 1)
semantic_error("Too many arguments");

/* Skip the argument */
while (!isspace(*str) && *str != '\0')
Expand All @@ -178,9 +181,9 @@ static void parse_probe_event(const char *str)
argv[argc] = strndup(s, str - s);
if (argv[argc] == NULL)
die("strndup");
if (++argc == MAX_PROBE_ARGS)
semantic_error("Too many arguments");
pr_debug("argv[%d]=%s\n", argc, argv[argc - 1]);
pr_debug("argv[%d]=%s\n", argc, argv[argc]);
argc++;

}
} while (*str != '\0');
if (!argc)
Expand Down

0 comments on commit 74ca4c0

Please sign in to comment.