--- binutils.orig/bfd/peXXigen.c 2018-05-10 10:09:03.619147342 +0100 +++ binutils-2.30/bfd/peXXigen.c 2018-05-10 10:20:20.884883540 +0100 @@ -2991,6 +2991,15 @@ _bfd_XX_bfd_copy_private_bfd_data_common bfd_get_section_size (section) - (addr - section->vma)); return FALSE; } + /* PR 23110. */ + else if (ope->pe_opthdr.DataDirectory[PE_DEBUG_DATA].Size < 0) + { + /* xgettext:c-format */ + _bfd_error_handler + (_("%pB: Data Directory size (%#lx) is negative"), + obfd, ope->pe_opthdr.DataDirectory[PE_DEBUG_DATA].Size); + return FALSE; + } for (i = 0; i < ope->pe_opthdr.DataDirectory[PE_DEBUG_DATA].Size / sizeof (struct external_IMAGE_DEBUG_DIRECTORY); i++)