diff options
author | Mark Wielaard <mjw@redhat.com> | 2014-01-20 13:49:48 +0100 |
---|---|---|
committer | Mark Wielaard <mjw@redhat.com> | 2014-01-24 12:40:28 +0100 |
commit | 247f85869852e5f0fc461c4c9827d1347e75204a (patch) | |
tree | 33857daaf990aba9d81645957615e4f992e2f5a9 | |
parent | a9039623c272f458a53f09009c2a0e1d6e60491d (diff) | |
download | elfutils-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/ChangeLog | 4 | ||||
-rw-r--r-- | src/addr2line.c | 2 |
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; |