Duplicate library pathname
diff --git a/ltrace-elf.c b/ltrace-elf.c
index d7cb1fd..bec85a0 100644
--- a/ltrace-elf.c
+++ b/ltrace-elf.c
@@ -465,19 +465,22 @@
proc->e_machine = lte.ehdr.e_machine;
struct library *lib = malloc(sizeof(*lib));
+ if (lib != NULL)
+ library_init(lib);
+ filename = strdup(filename);
char *soname = NULL;
int own_soname = 0;
- if (lib == NULL) {
+ if (lib == NULL || filename == NULL) {
fail:
if (own_soname)
free(soname);
if (lib != NULL)
library_destroy(lib);
+ free((char *)filename);
free(lib);
lib = NULL;
goto done;
}
- library_init(lib);
if (lte.soname != NULL) {
soname = strdup(lte.soname);