summaryrefslogtreecommitdiff
path: root/bfd/elf32-sh.c
diff options
context:
space:
mode:
Diffstat (limited to 'bfd/elf32-sh.c')
-rw-r--r--bfd/elf32-sh.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/bfd/elf32-sh.c b/bfd/elf32-sh.c
index 73b861e18f3..8ababcf5199 100644
--- a/bfd/elf32-sh.c
+++ b/bfd/elf32-sh.c
@@ -5085,6 +5085,13 @@ sh_elf_get_relocated_section_contents (bfd *output_bfd,
symtab_hdr = &elf_symtab_hdr (input_bfd);
+ bfd_byte *orig_data = data;
+ if (data == NULL)
+ {
+ data = bfd_malloc (input_section->size);
+ if (data == NULL)
+ return NULL;
+ }
memcpy (data, elf_section_data (input_section)->this_hdr.contents,
(size_t) input_section->size);
@@ -5155,6 +5162,8 @@ sh_elf_get_relocated_section_contents (bfd *output_bfd,
free (isymbuf);
if (elf_section_data (input_section)->relocs != internal_relocs)
free (internal_relocs);
+ if (orig_data == NULL)
+ free (data);
return NULL;
}