This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Nonsense error messages on invalid aout string offset


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=0d329c0a83a23cebb86fbe0ebddd780dc0df2424

commit 0d329c0a83a23cebb86fbe0ebddd780dc0df2424
Author: Alan Modra <amodra@gmail.com>
Date:   Wed Feb 28 17:14:24 2018 +1030

    Nonsense error messages on invalid aout string offset
    
    translate_symbol_table returns false on detecting an out of range name
    string offset, hooray for error checking, but doesn't set bfd_error or
    print a useful error.  bfd_error therefore contains whatever it had
    previously, in my testing, bfd_error_system_call.  So the error
    printed depended on errno.
    
    	PR 22887
    	* aoutx.h (translate_symbol_table): Print an error message and set
    	bfd_error on finding an invalid name string offset.

Diff:
---
 bfd/ChangeLog | 6 ++++++
 bfd/aoutx.h   | 8 +++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 59f7c9c..446b978 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2018-02-28  Alan Modra  <amodra@gmail.com>
+
+	PR 22887
+	* aoutx.h (translate_symbol_table): Print an error message and set
+	bfd_error on finding an invalid name string offset.
+
 2018-02-27  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* config.in: Regenerated.
diff --git a/bfd/aoutx.h b/bfd/aoutx.h
index 402b602..4cadbfb 100644
--- a/bfd/aoutx.h
+++ b/bfd/aoutx.h
@@ -1734,7 +1734,13 @@ NAME (aout, translate_symbol_table) (bfd *abfd,
       else if (x < strsize)
 	in->symbol.name = str + x;
       else
-	return FALSE;
+	{
+	  _bfd_error_handler
+	    (_("%pB: invalid string offset %" PRIu64 " >= %" PRIu64),
+	     abfd, (uint64_t) x, (uint64_t) strsize);
+	  bfd_set_error (bfd_error_bad_value);
+	  return FALSE;
+	}
 
       in->symbol.value = GET_SWORD (abfd,  ext->e_value);
       in->desc = H_GET_16 (abfd, ext->e_desc);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]