Assert we don't access htab->stub_group out of range

	2016-03-29  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	bfd/
	* elf32-arm.c (elf32_arm_get_stub_entry): Assert that we don't access
	passed the end of htab->stub_group array.
	(elf32_arm_create_or_find_stub_sec): Likewise.
	(elf32_arm_create_stub): Likewise.
diff --git a/bfd/ChangeLog.arm b/bfd/ChangeLog.arm
index 65e8b44..5c7a088 100644
--- a/bfd/ChangeLog.arm
+++ b/bfd/ChangeLog.arm
@@ -1,5 +1,12 @@
 2016-03-29  Thomas Preud'homme  <thomas.preudhomme@arm.com>
 
+	* elf32-arm.c (elf32_arm_get_stub_entry): Assert that we don't access
+	passed the end of htab->stub_group array.
+	(elf32_arm_create_or_find_stub_sec): Likewise.
+	(elf32_arm_create_stub): Likewise.
+
+2016-03-29  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+
 	* bfd-in.h (bfd_elf32_arm_set_target_relocs): Add a new parameter for
 	the input import library bfd.
 	* bfd-in2.h: Regenerate.
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index 1bbcef0..6557090 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -4076,6 +4076,7 @@
      Stub names need to include a section id, as there may well be
      more than one stub used to reach say, printf, and we need to
      distinguish between them.  */
+  BFD_ASSERT (input_section->id <= htab->top_id);
   id_sec = htab->stub_group[input_section->id].link_sec;
 
   if (h != NULL && h->stub_cache != NULL
@@ -4233,6 +4234,7 @@
     }
   else
     {
+      BFD_ASSERT (section->id <= htab->top_id);
       link_sec = htab->stub_group[section->id].link_sec;
       BFD_ASSERT (link_sec != NULL);
       stub_sec_p = &htab->stub_group[section->id].stub_sec;
@@ -5342,6 +5344,7 @@
     {
       BFD_ASSERT (irela);
       BFD_ASSERT (section);
+      BFD_ASSERT (section->id <= htab->top_id);
 
       /* Support for grouping stub sections.  */
       id_sec = htab->stub_group[section->id].link_sec;