From 1001a818520e401d6c624eb666dfa4067f2ecd38 Mon Sep 17 00:00:00 2001
From: Cyrille Bagard <nocbos@gmail.com>
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 <assert.h>
+
+
 #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