return false;
}
+ uint64_t *alloc_relrs = NULL;
if (relrs == NULL)
{
relrs = get_data (NULL, filedata, relr_offset, 1, relr_size,
_("RELR relocation data"));
if (relrs == NULL)
return false;
+ alloc_relrs = relrs;
}
/* Paranoia. */
}
free (symtab);
- free (relrs);
+ free (alloc_relrs);
return true;
}
if (symsec->sh_type != SHT_SYMTAB
&& symsec->sh_type != SHT_DYNSYM)
- return false;
+ {
+ free (relrs);
+ return false;
+ }
}
if (symsec != NULL
&& !get_symtab (filedata, symsec, &symtab, &nsyms, &strtab, &strtablen))
- return false;
+ {
+ free (relrs);
+ return false;
+ }
bool res;
relrs,
symtab, nsyms, strtab, strtablen,
dump_reloc);
- /* RELRS has been freed by dump_relr_relocations. */
- relrs = NULL;
+ free (relrs);
}
else
res = dump_relocations (filedata, rel_offset, rel_size,