summaryrefslogtreecommitdiff
path: root/addr2line.c
diff options
context:
space:
mode:
authornagachika <nagachika@ruby-lang.org>2021-09-11 13:52:43 +0900
committernagachika <nagachika@ruby-lang.org>2021-09-11 13:52:43 +0900
commit8e4ed4ed00e8346029953c14dd414a996e37a437 (patch)
tree6b19b6f1a334e873545c8dcad4bb5802966091a5 /addr2line.c
parent7b4bc893941b146565c396606effb5f16aa9e88d (diff)
merge revision(s) d795f494a89e0d9498dfedc54b8a98acc2bc4d7b: [Backport #17794]
Avoid `free(3)`ing invalid pointer Fixes [Bug #17794] --- addr2line.c | 2 ++ 1 file changed, 2 insertions(+)
Diffstat (limited to 'addr2line.c')
-rw-r--r--addr2line.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/addr2line.c b/addr2line.c
index 2095591fec..0029cffbca 100644
--- a/addr2line.c
+++ b/addr2line.c
@@ -1626,6 +1626,7 @@ debug_info_read(DebugInfoReader *reader, int num_traces, void **traces,
static unsigned long
uncompress_debug_section(ElfW(Shdr) *shdr, char *file, char **ptr)
{
+ *ptr = NULL;
#ifdef SUPPORT_COMPRESSED_DEBUG_LINE
ElfW(Chdr) *chdr = (ElfW(Chdr) *)(file + shdr->sh_offset);
unsigned long destsize = chdr->ch_size;
@@ -1646,6 +1647,7 @@ uncompress_debug_section(ElfW(Shdr) *shdr, char *file, char **ptr)
fail:
free(*ptr);
+ *ptr = NULL;
#endif
return 0;
}