From 7c04cf1a2dcc9e04ce8f280f399d6904053e89d9 Mon Sep 17 00:00:00 2001 From: Cyrille Bagard Date: Mon, 21 Jan 2019 19:39:40 +0100 Subject: Handled cases when the required processor is not found. --- plugins/pychrysalide/analysis/binary.c | 13 ++++++++++--- src/analysis/binary.c | 7 ++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/plugins/pychrysalide/analysis/binary.c b/plugins/pychrysalide/analysis/binary.c index 0fc9f38..c173605 100644 --- a/plugins/pychrysalide/analysis/binary.c +++ b/plugins/pychrysalide/analysis/binary.c @@ -180,9 +180,16 @@ static PyObject *py_loaded_binary_get_processor(PyObject *self, void *closure) binary = G_LOADED_BINARY(pygobject_get(self)); proc = g_loaded_binary_get_processor(binary); - result = pygobject_new(G_OBJECT(proc)); - - g_object_unref(G_OBJECT(proc)); + if (proc != NULL) + { + result = pygobject_new(G_OBJECT(proc)); + g_object_unref(G_OBJECT(proc)); + } + else + { + result = Py_None; + Py_INCREF(result); + } return result; diff --git a/src/analysis/binary.c b/src/analysis/binary.c index c38a725..8964973 100644 --- a/src/analysis/binary.c +++ b/src/analysis/binary.c @@ -1272,7 +1272,8 @@ GArchProcessor *g_loaded_binary_get_processor(const GLoadedBinary *binary) result = binary->proc; - g_object_ref(G_OBJECT(result)); + if (result != NULL) + g_object_ref(G_OBJECT(result)); return result; @@ -1727,6 +1728,7 @@ static bool g_loaded_binary_analyze(GLoadedBinary *binary, wgroup_id_t gid, GtkS if (desc == NULL) { log_simple_message(LMT_INFO, _("Unknown architecture")); + result = false; goto glba_exit; } else @@ -1737,6 +1739,7 @@ static bool g_loaded_binary_analyze(GLoadedBinary *binary, wgroup_id_t gid, GtkS if (binary->proc == NULL) { log_simple_message(LMT_ERROR, _("Unable to load the required processor")); + result = false; goto glba_exit; } @@ -1768,8 +1771,6 @@ static bool g_loaded_binary_analyze(GLoadedBinary *binary, wgroup_id_t gid, GtkS } - result = true; - glba_exit: return result; -- cgit v0.11.2-87-g4458