PR24938, Null Pointer Dereference in debug.c:debug_write_type

Alan Modra amodra@gmail.com
Mon Aug 26 10:21:00 GMT 2019


	PR 24938
	* debug.c (debug_write_type): Call empty_type for NULL type here..
	(debug_write_type): ..rather than in just one case here.

diff --git a/binutils/debug.c b/binutils/debug.c
index 5c984b7550..925d84c07c 100644
--- a/binutils/debug.c
+++ b/binutils/debug.c
@@ -2419,6 +2419,9 @@ debug_write_type (struct debug_handle *info,
   int is;
   const char *tag = NULL;
 
+  if (type == DEBUG_TYPE_NULL)
+    return (*fns->empty_type) (fhandle);
+
   /* If we have a name for this type, just output it.  We only output
      typedef names after they have been defined.  We output type tags
      whenever we are not actually defining them.  */
@@ -2481,8 +2484,6 @@ debug_write_type (struct debug_handle *info,
       debug_error (_("debug_write_type: illegal type encountered"));
       return FALSE;
     case DEBUG_KIND_INDIRECT:
-      if (*type->u.kindirect->slot == DEBUG_TYPE_NULL)
-	return (*fns->empty_type) (fhandle);
       return debug_write_type (info, fns, fhandle, *type->u.kindirect->slot,
 			       name);
     case DEBUG_KIND_VOID:

-- 
Alan Modra
Australia Development Lab, IBM



More information about the Binutils mailing list