From 37606e67df760b14ecf8dd9cf870a2364541b0b6 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 26 Aug 2019 19:06:28 +0930 Subject: PR24938, Null Pointer Dereference in debug.c:debug_write_type PR 24938 * debug.c (debug_write_type): Call empty_type for NULL type here.. (debug_write_type): ..rather than in just one case here. --- binutils/ChangeLog | 6 ++++++ binutils/debug.c | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index e5b197a..1516076 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,9 @@ +2019-08-26 Alan Modra + + PR 24938 + * debug.c (debug_write_type): Call empty_type for NULL type here.. + (debug_write_type): ..rather than in just one case here. + 2019-08-23 Nick Clifton PR 24829 diff --git a/binutils/debug.c b/binutils/debug.c index 5c984b7..925d84c 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: -- cgit v1.1