Messages in this thread Patch in this message | | | From | Adrian Hunter <> | Subject | [PATCH 3/5] perf tools: Fix parse_events_error dereferences | Date | Tue, 19 May 2015 16:05:44 +0300 |
| |
Parse errors can be reported in struct parse_events_error but the pointer passed is optional and can be NULL. Ensure it is not NULL before dereferencing it.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> --- tools/perf/util/parse-events.c | 2 ++ tools/perf/util/parse-events.y | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index 78032d8..2a4d1ec 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -1659,6 +1659,8 @@ void parse_events_evlist_error(struct parse_events_evlist *data, { struct parse_events_error *err = data->error; + if (!err) + return; err->idx = idx; err->str = strdup(str); WARN_ONCE(!err->str, "WARNING: failed to allocate error string"); diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y index 3d11e00..591905a 100644 --- a/tools/perf/util/parse-events.y +++ b/tools/perf/util/parse-events.y @@ -389,8 +389,10 @@ PE_NAME ':' PE_NAME if (parse_events_add_tracepoint(list, &data->idx, $1, $3)) { struct parse_events_error *error = data->error; - error->idx = @1.first_column; - error->str = strdup("unknown tracepoint"); + if (error) { + error->idx = @1.first_column; + error->str = strdup("unknown tracepoint"); + } return -1; } $$ = list; -- 1.9.1
| |