Re: USE_MMAP fuzzed object file attacks

I committed a broken patch.

	* aoutx.h (aout_get_external_symbols): Remove wrong #else and
	unneeded casts.
	* pdp11.c (aout_get_external_symbols): Likewise.
This commit is contained in:
Alan Modra
2024-04-04 12:50:17 +10:30
parent 9fd82d9142
commit 0ab0435fe6
2 changed files with 6 additions and 8 deletions

View File

@@ -1322,21 +1322,20 @@ aout_get_external_symbols (bfd *abfd)
if (! bfd_get_file_window (abfd, obj_sym_filepos (abfd), amt, if (! bfd_get_file_window (abfd, obj_sym_filepos (abfd), amt,
&obj_aout_sym_window (abfd), true)) &obj_aout_sym_window (abfd), true))
return false; return false;
syms = (struct external_nlist *) obj_aout_sym_window (abfd).data; syms = obj_aout_sym_window (abfd).data;
} }
else else
#else #endif
{ {
/* We allocate using malloc to make the values easy to free /* We allocate using malloc to make the values easy to free
later on. If we put them on the objalloc it might not be later on. If we put them on the objalloc it might not be
possible to free them. */ possible to free them. */
if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0) if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0)
return false; return false;
syms = (struct external_nlist *) _bfd_malloc_and_read (abfd, amt, amt); syms = _bfd_malloc_and_read (abfd, amt, amt);
if (syms == NULL) if (syms == NULL)
return false; return false;
} }
#endif
obj_aout_external_syms (abfd) = syms; obj_aout_external_syms (abfd) = syms;
obj_aout_external_sym_count (abfd) = count; obj_aout_external_sym_count (abfd) = count;

View File

@@ -1299,21 +1299,20 @@ aout_get_external_symbols (bfd *abfd)
if (! bfd_get_file_window (abfd, obj_sym_filepos (abfd), amt, if (! bfd_get_file_window (abfd, obj_sym_filepos (abfd), amt,
&obj_aout_sym_window (abfd), true)) &obj_aout_sym_window (abfd), true))
return false; return false;
syms = (struct external_nlist *) obj_aout_sym_window (abfd).data; syms = obj_aout_sym_window (abfd).data;
} }
else else
#else #endif
{ {
/* We allocate using malloc to make the values easy to free /* We allocate using malloc to make the values easy to free
later on. If we put them on the objalloc it might not be later on. If we put them on the objalloc it might not be
possible to free them. */ possible to free them. */
if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0) if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0)
return false; return false;
syms = (struct external_nlist *) _bfd_malloc_and_read (abfd, amt, amt); syms = _bfd_malloc_and_read (abfd, amt, amt);
if (syms == NULL) if (syms == NULL)
return false; return false;
} }
#endif
obj_aout_external_syms (abfd) = syms; obj_aout_external_syms (abfd) = syms;
obj_aout_external_sym_count (abfd) = count; obj_aout_external_sym_count (abfd) = count;