aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2019-08-24 00:13:34 +0100
committerAnders Broman <a.broman58@gmail.com>2019-08-24 06:41:09 +0000
commit976da8e7fc999b3414f83db9a8c14c7b3658e878 (patch)
tree54a1d51883ad05c4f4ee0331c9b51960b5d4585b
parent8e925238b09b48c773f1d0877ada8c30fc861ce7 (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.c6
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,