Avoid double-free/double-fclose on error. am: 332513d0d2 am: 6c5b3c3fed am: 8d222cd40c am: e1b95886e2
am: 85ec116a32

Change-Id: I6e0ac3d3bd9cc300c56eea42875aa96e508552d3
diff --git a/src/dwarf/Gfind_proc_info-lsb.c b/src/dwarf/Gfind_proc_info-lsb.c
index 7862ef7..77ed3d0 100644
--- a/src/dwarf/Gfind_proc_info-lsb.c
+++ b/src/dwarf/Gfind_proc_info-lsb.c
@@ -257,7 +257,11 @@
       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 @@
 
 /* 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;
 }