aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2017-08-07 08:29:31 -0700
committerElliott Hughes <enh@google.com>2017-08-07 08:29:31 -0700
commit332513d0d27d0f9bc798c9d7bd91944be1f0b20f (patch)
tree4b99108844b45f7bac6e571948aab93ad15c8248
parent76a0b9f6a9813311ddfd59aaa580339f36a2c510 (diff)
downloadlibunwind-332513d0d27d0f9bc798c9d7bd91944be1f0b20f.tar.gz
Avoid double-free/double-fclose on error.android-o-iot-preview-5o-iot-preview-5
Bug: N/A Test: builds Change-Id: I7d55b0b33cc44861ef22450afe68d421bde3f57a Signed-off-by: Ivan Maidanski <i.maidanski@samsung.com>
-rw-r--r--src/dwarf/Gfind_proc_info-lsb.c17
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;
}