mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 11:46:19 +00:00
perf probe: Fix argv array size in probe parser
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>
This commit is contained in:
parent
57d250df7d
commit
74ca4c0ece
1 changed files with 7 additions and 4 deletions
|
@ -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];
|
||||
|
||||
|
@ -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')
|
||||
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue