summaryrefslogtreecommitdiff
path: root/bfd/elf32-frv.c
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@mips.com>2018-04-04 02:00:48 +0100
committerMaciej W. Rozycki <macro@mips.com>2018-04-04 02:00:48 +0100
commitf428698edfd845a21639f5145cba3772eb92abc2 (patch)
tree309571e3073a0293cdc96107d6f1a68143be912f /bfd/elf32-frv.c
parent7ed6f92aaffdcc0995b0247379fb8ea621854dce (diff)
downloadbinutils-gdb-f428698edfd845a21639f5145cba3772eb92abc2.tar.gz
PR binutils/22875: FRV/ELF: Prevent an out-of-bounds howto table access
Prevent an out-of-bounds `elf32_frv_howto_table' table access in `frv_info_to_howto_rela' by using the size of the table rather than R_FRV_max to determine the number of entries in the contiguous regular FRV relocation range defined and described in the table. bfd/ * elf32-frv.c (frv_info_to_howto_rela): Correct the range check for `elf32_frv_howto_table' table access.
Diffstat (limited to 'bfd/elf32-frv.c')
-rw-r--r--bfd/elf32-frv.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/bfd/elf32-frv.c b/bfd/elf32-frv.c
index 7831aff806b..fc0bdcde7ea 100644
--- a/bfd/elf32-frv.c
+++ b/bfd/elf32-frv.c
@@ -25,6 +25,7 @@
#include "elf/frv.h"
#include "dwarf2.h"
#include "hashtab.h"
+#include "libiberty.h"
/* Forward declarations. */
@@ -2551,7 +2552,7 @@ frv_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED,
break;
default:
- if (r_type >= (unsigned int) R_FRV_max)
+ if (r_type >= ARRAY_SIZE (elf32_frv_howto_table))
{
/* xgettext:c-format */
_bfd_error_handler (_("%pB: unsupported relocation type %#x"),