diff options
author | Peter Wu <peter@lekensteyn.nl> | 2019-08-24 00:13:34 +0100 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2019-08-24 06:41:09 +0000 |
commit | 976da8e7fc999b3414f83db9a8c14c7b3658e878 (patch) | |
tree | 54a1d51883ad05c4f4ee0331c9b51960b5d4585b | |
parent | 8e925238b09b48c773f1d0877ada8c30fc861ce7 (diff) |
ELF: do not create lots of tree items for Entry Size 1
Change-Id: Ief8db4a833099c53adb1695129d435c3b89c2680
Reviewed-on: https://code.wireshark.org/review/34347
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r-- | epan/dissectors/file-elf.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/epan/dissectors/file-elf.c b/epan/dissectors/file-elf.c index b92dc3d40d..744e85116c 100644 --- a/epan/dissectors/file-elf.c +++ b/epan/dissectors/file-elf.c @@ -1626,7 +1626,7 @@ dissect_elf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) } offset += register_size; - if (segment_size > 0 && sh_type != 8) { + if (segment_size > 0 && sh_type != 8) { /* ! SHT_NOBITS */ file_size += segment_size; segment_info[area_counter].offset = segment_offset; @@ -1687,7 +1687,9 @@ dissect_elf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) i += 1; } } else { - if (sh_entsize > 0) { + /* .debug_str sections have sh_entsize 1, displaying every byte + * individually can explode the tree size, so require > 1. */ + if (sh_entsize > 1) { next_offset = value_guard(segment_offset); for (i = 1; i < (segment_size / sh_entsize) + 1; i += 1) { proto_tree_add_bytes_format(segment_tree, hf_elf_entry_bytes, tvb, next_offset, |