[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] Error out on invalid locexpr length
Hi,
When invoking dwz with a file containing an invalid locexpr length, we can run
into this assertion:
...
dwz: dwz.c:1722: read_loclist: Assertion `ptr + len <= endsec' failed.
Aborted (core dumped)
...
Change the assert into an error:
...
dwz: a.out: locexpr length 0x4ef exceeds .debug_loc section
...
OK for trunk?
Thanks,
- Tom
Error out on invalid locexpr length
2019-02-14 Tom de Vries <tdevries@suse.de>
PR dwz/24172
* dwz.c (read_loclist): Change assert (ptr + len <= endsec) into an
error.
---
dwz.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/dwz.c b/dwz.c
index 4ef8657..a876ab2 100644
--- a/dwz.c
+++ b/dwz.c
@@ -1719,7 +1719,13 @@ read_loclist (DSO *dso, dw_die_ref die, GElf_Addr offset)
continue;
len = read_16 (ptr);
- assert (ptr + len <= endsec);
+ if (!(ptr + len <= endsec))
+ {
+ error (0, 0,
+ "%s: locexpr length 0x%Lx exceeds .debug_loc section",
+ dso->filename, (long long) len);
+ return 1;
+ }
if (read_exprloc (dso, die, ptr, len, &need_adjust))
return 1;