From c81794df21d0baec9d55184a3432679dd3600c69 Mon Sep 17 00:00:00 2001 From: Andreas Ziegler <andreas.ziegler@fau.de> Date: Mon, 25 Feb 2019 10:11:22 +0100 Subject: [PATCH] library: take maximum size for conflicting ranges When parsing the .symtab of a binary/library we can have multiple entries for the same address but some entries could have a size of 0 which would override a bigger value read from a valid entry earlier. Let's always take the maximum of all read values for the size of a function. --- librarytrader/library.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/librarytrader/library.py b/librarytrader/library.py index 5cd2517..b9d4301 100644 --- a/librarytrader/library.py +++ b/librarytrader/library.py @@ -258,9 +258,10 @@ class Library: self.exported_addrs[start].append(name) size = symbol['st_size'] if start in self.ranges and self.ranges[start] != size: - logging.warning("differing range %s:%x:(%x <-> %x", + logging.warning("differing range %s:%x:(%x <-> %x)", self.fullname, start, self.ranges[start], size) + size = max(self.ranges[start], size) self.ranges[start] = size def parse_dynamic(self): -- GitLab