From 1001a818520e401d6c624eb666dfa4067f2ecd38 Mon Sep 17 00:00:00 2001 From: Cyrille Bagard Date: Fri, 27 Apr 2018 11:56:18 +0200 Subject: Made the Dex demangler more reliable. --- plugins/dexbnf/type.c | 15 +++++++++++---- src/analysis/types/encaps.c | 5 +++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/plugins/dexbnf/type.c b/plugins/dexbnf/type.c index 75d0b35..29ba0a8 100644 --- a/plugins/dexbnf/type.c +++ b/plugins/dexbnf/type.c @@ -203,14 +203,21 @@ static GDataType *dtd_field_type_descriptor(input_buffer *buffer, char ahead) descriptor = dtd_non_array_field_type_descriptor(buffer, ahead); - if (dim == 0) - result = descriptor; + if (descriptor == NULL) + result = NULL; else { - result = g_encapsulated_type_new(ECT_ARRAY, descriptor); + if (dim == 0) + result = descriptor; + + else + { + result = g_encapsulated_type_new(ECT_ARRAY, descriptor); - g_encapsulated_type_set_dimension(G_ENCAPSULATED_TYPE(result), dim); + g_encapsulated_type_set_dimension(G_ENCAPSULATED_TYPE(result), dim); + + } } diff --git a/src/analysis/types/encaps.c b/src/analysis/types/encaps.c index 537d849..36dc71a 100644 --- a/src/analysis/types/encaps.c +++ b/src/analysis/types/encaps.c @@ -24,6 +24,9 @@ #include "encaps.h" +#include + + #include "../routine.h" #include "../type-int.h" #include "../../common/extstr.h" @@ -143,11 +146,13 @@ GDataType *g_encapsulated_type_new(EncapsulationType type, ...) { case ECT_ROUTINE: result->routine = va_arg(ap, GBinRoutine *); + assert(result->routine != NULL); g_binary_routine_set_name(result->routine, "(*)"); break; default: result->child = va_arg(ap, GDataType *); + assert(result->child != NULL); break; } -- cgit v0.11.2-87-g4458