aboutsummaryrefslogtreecommitdiff
path: root/binutils/debug.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2019-08-26 19:06:28 +0930
committerAlan Modra <amodra@gmail.com>2019-08-26 19:31:10 +0930
commit37606e67df760b14ecf8dd9cf870a2364541b0b6 (patch)
tree2b81512adc97c5b5eb96d6ca14e9541dba4f0b81 /binutils/debug.c
parentdb3b6ecc28a079768dc4661e459c4a68039e8483 (diff)
downloadbinutils-37606e67df760b14ecf8dd9cf870a2364541b0b6.zip
binutils-37606e67df760b14ecf8dd9cf870a2364541b0b6.tar.gz
binutils-37606e67df760b14ecf8dd9cf870a2364541b0b6.tar.bz2
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.
Diffstat (limited to 'binutils/debug.c')
-rw-r--r--binutils/debug.c5
1 files changed, 3 insertions, 2 deletions
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: