]> git.karo-electronics.de Git - linux-beck.git/blobdiff - tools/perf/util/evsel.c
perf tools: Pre-check sample size before parsing
[linux-beck.git] / tools / perf / util / evsel.c
index d6fd59beb860739aea40e1b4052f6eda1a741996..bfce8bf642fae5943ade4dffb1a8743f55beaf25 100644 (file)
@@ -304,7 +304,8 @@ static int perf_event__parse_id_sample(const union perf_event *event, u64 type,
 }
 
 int perf_event__parse_sample(const union perf_event *event, u64 type,
-                            bool sample_id_all, struct perf_sample *data)
+                            int sample_size, bool sample_id_all,
+                            struct perf_sample *data)
 {
        const u64 *array;
 
@@ -319,6 +320,9 @@ int perf_event__parse_sample(const union perf_event *event, u64 type,
 
        array = event->sample.array;
 
+       if (sample_size + sizeof(event->header) > event->header.size)
+               return -EFAULT;
+
        if (type & PERF_SAMPLE_IP) {
                data->ip = event->ip.ip;
                array++;