diff options
author | Alan Modra <amodra@gmail.com> | 2021-10-24 20:27:06 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2021-10-24 22:05:51 +1030 |
commit | 1ed0032b40063795d6c3ce89eab3101a8fd67569 (patch) | |
tree | 8b934260c43ee41d117c8c9fb5e12062654b23ad /bfd/bfd-in.h | |
parent | e02812494254b70fec6fa432f7f668956711133b (diff) | |
download | gdb-1ed0032b40063795d6c3ce89eab3101a8fd67569.zip gdb-1ed0032b40063795d6c3ce89eab3101a8fd67569.tar.gz gdb-1ed0032b40063795d6c3ce89eab3101a8fd67569.tar.bz2 |
asan: c4x, c54x coff_canonicalize_reloc buffer overflow
Sometimes the investigation of a fuzzing bug report leads into areas
you'd rather not go. In this instance by the time I'd figured out the
real cause was a target variant that had never been properly supported
in binutils, the time needed to fix it was less than the time needed
to rip it out.
* coffcode.h (coff_set_alignment_hook): Call bfd_coff_swap_reloc_in
not coff_swap_reloc_in.
(coff_slurp_reloc_table): Likewise. Don't use RELOC type.
(ticoff0_swap_table): Use coff_swap_reloc_v0_out and
coff_swap_reloc_v0_in.
* coffswap.h (coff_swap_reloc_v0_in, coff_swap_reloc_v0_out): New.
* coff-tic54x.c (tic54x_lookup_howto): Don't abort.
* coffgen.c (coff_get_normalized_symtab): Use PTR_ADD.
* bfd-in.h (PTR_ADD, NPTR_ADD): Avoid warnings when passing an
expression.
* bfd-in2.h: Regenerate.
Diffstat (limited to 'bfd/bfd-in.h')
-rw-r--r-- | bfd/bfd-in.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h index 1217643..286afc6 100644 --- a/bfd/bfd-in.h +++ b/bfd/bfd-in.h @@ -114,9 +114,9 @@ typedef struct bfd bfd; #endif /* Silence "applying zero offset to null pointer" UBSAN warnings. */ -#define PTR_ADD(P,A) ((A) ? (P) + (A) : (P)) +#define PTR_ADD(P,A) ((A) != 0 ? (P) + (A) : (P)) /* Also prevent non-zero offsets from being applied to a null pointer. */ -#define NPTR_ADD(P,A) ((P) ? (P) + (A) : (P)) +#define NPTR_ADD(P,A) ((P) != NULL ? (P) + (A) : (P)) #ifdef BFD64 |