[binutils-gdb] ubsan: alpha-vma: timeout

Alan Modra amodra@sourceware.org
Mon Jan 13 01:50:00 GMT 2020


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

commit b50ef514ff0c8d5506227c412c508f9f538bcf5a
Author: Alan Modra <amodra@gmail.com>
Date:   Mon Jan 13 10:10:41 2020 +1030

    ubsan: alpha-vma: timeout
    
    	* vms-alpha.c (_bfd_vms_slurp_egsd): Ensure minimum size even
    	for "ignored" records.

Diff:
---
 bfd/ChangeLog   |  5 +++++
 bfd/vms-alpha.c | 19 +++++++++++--------
 2 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 70944d3..84caf0b 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,10 @@
 2020-01-13  Alan Modra  <amodra@gmail.com>
 
+	* vms-alpha.c (_bfd_vms_slurp_egsd): Ensure minimum size even
+	for "ignored" records.
+
+2020-01-13  Alan Modra  <amodra@gmail.com>
+
 	* wasm-module.c (wasm_scan_name_function_section): Formatting.
 	Delete asect name check.  Move asect NULL check to wasm_object_p.
 	Correct bounds check of sizes against end.  Replace uses of
diff --git a/bfd/vms-alpha.c b/bfd/vms-alpha.c
index 73e7285..32f4e68 100644
--- a/bfd/vms-alpha.c
+++ b/bfd/vms-alpha.c
@@ -1217,6 +1217,16 @@ _bfd_vms_slurp_egsd (bfd *abfd)
 	  return FALSE;
 	}
 
+      if (gsd_size < 4)
+	{
+	too_small:
+	  _bfd_error_handler (_("corrupt EGSD record type %d: size (%#x) "
+				"is too small"),
+			      gsd_type, gsd_size);
+	  bfd_set_error (bfd_error_bad_value);
+	  return FALSE;
+	}
+
       switch (gsd_type)
 	{
 	case EGSD__C_PSC:
@@ -1227,14 +1237,7 @@ _bfd_vms_slurp_egsd (bfd *abfd)
 	    asection *section;
 
 	    if (offsetof (struct vms_egps, flags) + 2 > gsd_size)
-	      {
-	      too_small:
-		_bfd_error_handler (_("corrupt EGSD record type %d: size (%#x) "
-				      "is too small"),
-				    gsd_type, gsd_size);
-		bfd_set_error (bfd_error_bad_value);
-		return FALSE;
-	      }
+	      goto too_small;
 	    vms_flags = bfd_getl16 (egps->flags);
 
 	    if ((vms_flags & EGPS__V_REL) == 0)



More information about the Binutils-cvs mailing list