Messages in this thread Patch in this message | ![/](/images/icornerl.gif) | | From | Vince Weaver <> | Date | Thu, 25 Jul 2019 14:27:14 -0400 (EDT) | Subject | [patch] perf report segfault with 0-sized strings |
| |
Hello,
the perf_data_fuzzer found an issue when strings have size 0. malloc() in do_read_string() is happy to allocate a string of size 0 but when code (in this case the pmu parser) tries to work with those it will segfault.
Signed-off-by: Vince Weaver <vincent.weaver@maine.edu>
diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c index c24db7f4909c..641129efa987 100644 --- a/tools/perf/util/header.c +++ b/tools/perf/util/header.c @@ -251,6 +252,9 @@ static char *do_read_string(struct feat_fd *ff) if (do_read_u32(ff, &len)) return NULL; + if (len==0) + return NULL; + buf = malloc(len); if (!buf) return NULL; @@ -1781,6 +1785,10 @@ static void print_pmu_mappings(struct feat_fd *ff, FILE *fp) str = ff->ph->env.pmu_mappings; while (pmu_num) { + + if (str==NULL) + goto error; + type = strtoul(str, &tmp, 0); if (*tmp != ':') goto error;
| ![\](/images/icornerr.gif) |