summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wielaard <mjw@redhat.com>2014-01-20 13:49:48 +0100
committerMark Wielaard <mjw@redhat.com>2014-01-24 12:40:28 +0100
commit247f85869852e5f0fc461c4c9827d1347e75204a (patch)
tree33857daaf990aba9d81645957615e4f992e2f5a9
parenta9039623c272f458a53f09009c2a0e1d6e60491d (diff)
downloadelfutils-247f85869852e5f0fc461c4c9827d1347e75204a.tar.gz
addr2line: handle_address initialize scopes to NULL.
dwarf_getscopes returns the number of scope DIEs containing a PC address. It returns -1 for errors or 0 if no scopes match PC. If dwarf_getscopes returned 0, then scopes will not be allocated and handle_address might free the uninitialized scopes pointer. Make sure it always has a defined value. Signed-off-by: Mark Wielaard <mjw@redhat.com>
-rw-r--r--src/ChangeLog4
-rw-r--r--src/addr2line.c2
2 files changed, 5 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 99b11564..57be0bb3 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,7 @@
+2014-01-20 Mark Wielaard <mjw@redhat.com>
+
+ * addr2line.c (handle_address): Initialize scopes to NULL.
+
2014-01-17 Roland McGrath <roland@redhat.com>
* strip.c (handle_elf): Check for bogus values in sh_link, sh_info,
diff --git a/src/addr2line.c b/src/addr2line.c
index 0541fb68..50fc2b38 100644
--- a/src/addr2line.c
+++ b/src/addr2line.c
@@ -642,7 +642,7 @@ handle_address (const char *string, Dwfl *dwfl)
Dwarf_Addr bias = 0;
Dwarf_Die *cudie = dwfl_module_addrdie (mod, addr, &bias);
- Dwarf_Die *scopes;
+ Dwarf_Die *scopes = NULL;
int nscopes = dwarf_getscopes (cudie, addr - bias, &scopes);
if (nscopes < 0)
return 1;