diff options
| author | 2012-09-19 10:21:21 -0700 | |
|---|---|---|
| committer | 2012-09-19 10:21:21 -0700 | |
| commit | 0b6c404a07e3240b95aa5682fb8fd57c41609d7a (patch) | |
| tree | c4d410b0ec7044922b73c39ecfb3fbb620c29282 /tools/perf/util/annotate.c | |
| parent | Input: imx_keypad - fix missing clk conversions (diff) | |
| parent | Linux 3.6-rc5 (diff) | |
| download | wireguard-linux-0b6c404a07e3240b95aa5682fb8fd57c41609d7a.tar.xz wireguard-linux-0b6c404a07e3240b95aa5682fb8fd57c41609d7a.zip | |
Merge tag 'v3.6-rc5' into for-linus
Sync with mainline so that I can revert an input patch that came in through
another subsystem tree.
Diffstat (limited to '')
| -rw-r--r-- | tools/perf/util/annotate.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c index 8069dfb5ba77..3a282c0057d2 100644 --- a/tools/perf/util/annotate.c +++ b/tools/perf/util/annotate.c @@ -426,7 +426,18 @@ int symbol__alloc_hist(struct symbol *sym) { struct annotation *notes = symbol__annotation(sym); const size_t size = symbol__size(sym); - size_t sizeof_sym_hist = (sizeof(struct sym_hist) + size * sizeof(u64)); + size_t sizeof_sym_hist; + + /* Check for overflow when calculating sizeof_sym_hist */ + if (size > (SIZE_MAX - sizeof(struct sym_hist)) / sizeof(u64)) + return -1; + + sizeof_sym_hist = (sizeof(struct sym_hist) + size * sizeof(u64)); + + /* Check for overflow in zalloc argument */ + if (sizeof_sym_hist > (SIZE_MAX - sizeof(*notes->src)) + / symbol_conf.nr_events) + return -1; notes->src = zalloc(sizeof(*notes->src) + symbol_conf.nr_events * sizeof_sym_hist); if (notes->src == NULL) @@ -777,7 +788,7 @@ fallback: free_filename = false; } - if (dso->symtab_type == SYMTAB__KALLSYMS) { + if (dso->symtab_type == DSO_BINARY_TYPE__KALLSYMS) { char bf[BUILD_ID_SIZE * 2 + 16] = " with build id "; char *build_id_msg = NULL; |
