aboutsummaryrefslogtreecommitdiff
path: root/bfd/coffcode.h
diff options
context:
space:
mode:
Diffstat (limited to 'bfd/coffcode.h')
-rw-r--r--bfd/coffcode.h18
1 files changed, 12 insertions, 6 deletions
diff --git a/bfd/coffcode.h b/bfd/coffcode.h
index ca1d522..58dd879 100644
--- a/bfd/coffcode.h
+++ b/bfd/coffcode.h
@@ -1880,17 +1880,23 @@ coff_set_arch_mach_hook (abfd, filehdr)
cputype = 0;
else
{
- bfd_byte buf[bfd_coff_symesz (abfd)];
+ bfd_byte *buf;
struct internal_syment sym;
+ buf = (bfd_byte *) bfd_malloc (bfd_coff_symesz (abfd));
if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0
- || bfd_read (buf, 1, bfd_coff_symesz (abfd), abfd) != bfd_coff_symesz (abfd))
- return false;
+ || (bfd_read (buf, 1, bfd_coff_symesz (abfd), abfd)
+ != bfd_coff_symesz (abfd)))
+ {
+ bfd_free (buf);
+ return false;
+ }
coff_swap_sym_in (abfd, (PTR) buf, (PTR) &sym);
if (sym.n_sclass == C_FILE)
cputype = sym.n_type & 0xff;
else
cputype = 0;
+ bfd_free (buf);
}
}
@@ -2762,7 +2768,7 @@ coff_compute_section_file_positions (abfd)
current->target_index = target_index++;
}
- free (section_list);
+ bfd_free (section_list);
}
#else /* ! COFF_IMAGE_WITH_PE */
{
@@ -3696,7 +3702,7 @@ coff_write_object_contents (abfd)
coff_swap_filehdr_out (abfd, (PTR) & internal_f, (PTR) buff);
amount = bfd_write ((PTR) buff, 1, bfd_coff_filhsz (abfd), abfd);
- free (buff);
+ bfd_free (buff);
if (amount != bfd_coff_filhsz (abfd))
return false;
@@ -3716,7 +3722,7 @@ coff_write_object_contents (abfd)
coff_swap_aouthdr_out (abfd, (PTR) & internal_a, (PTR) buff);
amount = bfd_write ((PTR) buff, 1, bfd_coff_aoutsz (abfd), abfd);
- free (buff);
+ bfd_free (buff);
if (amount != bfd_coff_aoutsz (abfd))
return false;