mirror of
https://github.com/torvalds/linux.git
synced 2024-12-29 14:21:47 +00:00
perf symbols: Robustify reading of build-id from sysfs
Markus reported that perf segfaults when reading /sys/kernel/notes from a kernel linked with GNU gold, due to what looks like a gold bug, so do some bounds checking to avoid crashing in that case. Reported-by: Markus Trippelsdorf <markus@trippelsdorf.de> Report-Link: http://lkml.kernel.org/r/20161219161821.GA294@x4 Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-ryhgs6a6jxvz207j2636w31c@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
30a9c64448
commit
7934c98a6e
@ -537,6 +537,12 @@ int sysfs__read_build_id(const char *filename, void *build_id, size_t size)
|
|||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
int n = namesz + descsz;
|
int n = namesz + descsz;
|
||||||
|
|
||||||
|
if (n > (int)sizeof(bf)) {
|
||||||
|
n = sizeof(bf);
|
||||||
|
pr_debug("%s: truncating reading of build id in sysfs file %s: n_namesz=%u, n_descsz=%u.\n",
|
||||||
|
__func__, filename, nhdr.n_namesz, nhdr.n_descsz);
|
||||||
|
}
|
||||||
if (read(fd, bf, n) != n)
|
if (read(fd, bf, n) != n)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user