diff options
author | Elliott Hughes <enh@google.com> | 2017-08-07 23:23:02 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-08-07 23:23:02 +0000 |
commit | e1b95886e206794050a4c204afd2a21ef926e888 (patch) | |
tree | 4b99108844b45f7bac6e571948aab93ad15c8248 | |
parent | 3d5ff8ecfa449d74a02ceebd547628b5d09669f6 (diff) | |
parent | 8d222cd40cf153541f013351b90625f4c624482e (diff) | |
download | libunwind-e1b95886e206794050a4c204afd2a21ef926e888.tar.gz |
Avoid double-free/double-fclose on error. am: 332513d0d2 am: 6c5b3c3fed
am: 8d222cd40c
Change-Id: I67608072a9309cbf325071c006a1d517e8583d3b
-rw-r--r-- | src/dwarf/Gfind_proc_info-lsb.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/dwarf/Gfind_proc_info-lsb.c b/src/dwarf/Gfind_proc_info-lsb.c index 7862ef70..77ed3d09 100644 --- a/src/dwarf/Gfind_proc_info-lsb.c +++ b/src/dwarf/Gfind_proc_info-lsb.c @@ -257,7 +257,11 @@ load_debug_frame (const char *file, char **buf, size_t *bufsize, newname = malloc (strlen (linkbuf) + strlen (debugdir) + strlen (file) + 9); if (basedir == NULL || newname == NULL) - goto file_error; + { + free (basedir); + free (newname); + goto load_debug_frame_error; + } p = strrchr (file, '/'); if (p != NULL) @@ -299,11 +303,12 @@ load_debug_frame (const char *file, char **buf, size_t *bufsize, /* An error reading image file. Release resources and return error code */ file_error: - free(stringtab); - free(sec_hdrs); - free(linkbuf); - free(*buf); - fclose(f); + free (stringtab); + free (sec_hdrs); + fclose (f); +load_debug_frame_error: + free (linkbuf); + free (*buf); return 1; } |