From 6a29d95602b09bb83d2c82b45ed935157fb780aa Mon Sep 17 00:00:00 2001
From: Alan Modra <amodra@gmail.com>
Date: Mon, 31 Dec 2018 15:40:08 +1030
Subject: [PATCH] PR24041, Invalid Memory Address Dereference in
 elf_link_add_object_symbols

	PR 24041
	* elflink.c (elf_link_add_object_symbols): Don't segfault on
	crafted ET_DYN with no program headers.

CVE: CVE-2018-20651
Upstream-Status: Backport
[https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=54025d5812ff100f5f0654eb7e1ffd50f2e37f5f]

Signed-off-by: Dan Tran <dantran@microsoft.com>
---
 bfd/elflink.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/bfd/elflink.c b/bfd/elflink.c
index 46091b6341..557c550082 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -4178,7 +4178,7 @@ error_free_dyn:
 	 all sections contained fully therein.  This makes relro
 	 shared library sections appear as they will at run-time.  */
       phdr = elf_tdata (abfd)->phdr + elf_elfheader (abfd)->e_phnum;
-      while (--phdr >= elf_tdata (abfd)->phdr)
+      while (phdr-- > elf_tdata (abfd)->phdr)
 	if (phdr->p_type == PT_GNU_RELRO)
 	  {
 	    for (s = abfd->sections; s != NULL; s = s->next)
-- 
2.22.0.vfs.1.1.57.gbaf16c8

