From 8a7d7b3303dee1a381893391c04acab35dec6942 Mon Sep 17 00:00:00 2001
From: Cyrille Bagard <nocbos@gmail.com>
Date: Fri, 26 Jan 2018 22:39:34 +0100
Subject: Cleaned some format loading processes.

---
 ChangeLog               |  6 ++++++
 plugins/elf/format.c    | 47 ++++++++++++++++-------------------------------
 plugins/mobicore/mclf.c | 19 +++++++------------
 3 files changed, 29 insertions(+), 43 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index ced1ad5..2ec6dab 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+18-01-26  Cyrille Bagard <nocbos@gmail.com>
+
+	* plugins/elf/format.c:
+	* plugins/mobicore/mclf.c:
+	Clean some format loading processes.
+
 18-01-24  Cyrille Bagard <nocbos@gmail.com>
 
 	* plugins/pychrysalide/arch/vmpa.c:
diff --git a/plugins/elf/format.c b/plugins/elf/format.c
index a5c8c92..9e3b636 100644
--- a/plugins/elf/format.c
+++ b/plugins/elf/format.c
@@ -255,44 +255,37 @@ GBinFormat *g_elf_format_new(GBinContent *content, GExeFormat *parent, GtkStatus
     g_binary_format_set_content(base, content);
 
     if (!read_elf_header(result, &result->header, &result->is_32b, &result->endian))
-    {
-        /* TODO */
-        return NULL;
-    }
-
+        goto gefn_error;
 
     /* Vérification des tailles d'entrée de table */
 
     if (ELF_HDR(result, result->header, e_phentsize) != ELF_SIZEOF_PHDR(result))
     {
-        log_variadic_message(LMT_BAD_BINARY, _("Corrupted program header size (%hu); fixed!  --  replacing 0x%04hx by 0x%04hx at offset 0x%x"),
+        log_variadic_message(LMT_BAD_BINARY,
+                             _("Corrupted program header size (%hu); fixed!" \
+                               "  --  replacing 0x%04hx by 0x%04hx at offset 0x%x"),
                              ELF_HDR(result, result->header, e_phentsize),
                              ELF_HDR(result, result->header, e_phentsize),
-                             ELF_SIZEOF_PHDR(result), ELF_HDR_OFFSET_OF(result, e_phentsize));
+                             ELF_SIZEOF_PHDR(result),
+                             ELF_HDR_OFFSET_OF(result, e_phentsize));
+
         ELF_HDR_SET(result, result->header, e_phentsize, ELF_SIZEOF_PHDR(result));
+
     }
 
     if (ELF_HDR(result, result->header, e_shentsize) != ELF_SIZEOF_SHDR(result))
     {
-        log_variadic_message(LMT_BAD_BINARY, _("Corrupted section header size (%hu); fixed!  --  replacing 0x%04hx by 0x%04hx at offset 0x%x"),
+        log_variadic_message(LMT_BAD_BINARY,
+                             _("Corrupted section header size (%hu); fixed!" \
+                               "  --  replacing 0x%04hx by 0x%04hx at offset 0x%x"),
                              ELF_HDR(result, result->header, e_shentsize),
                              ELF_HDR(result, result->header, e_shentsize),
-                             ELF_SIZEOF_SHDR(result), ELF_HDR_OFFSET_OF(result, e_shentsize));
+                             ELF_SIZEOF_SHDR(result),
+                             ELF_HDR_OFFSET_OF(result, e_shentsize));
+
         ELF_HDR_SET(result, result->header, e_shentsize, ELF_SIZEOF_SHDR(result));
-    }
 
-    /* FIXME : à améliorer */
-    /*
-    if ((ELF_HDR(result, result->header, e_shnum) * ELF_HDR(result, result->header, e_shentsize)) >= length)
-    {
-        log_variadic_message(LMT_BAD_BINARY, ("Suspicious section table (bigger than the binary !) ; reset!  --  replacing 0x%04hx by 0x%04hx at offset 0x%x"),
-                             ELF_HDR(result, result->header, e_shnum),
-                             0, ELF_HDR_OFFSET_OF(result, e_shnum));
-        ELF_HDR_SET(result, result->header, e_shnum, 0);
     }
-    */
-
-
 
     /**
      * On inscrit les éléments préchargés avant tout !
@@ -307,18 +300,10 @@ GBinFormat *g_elf_format_new(GBinContent *content, GExeFormat *parent, GtkStatus
 
 
     if (!load_elf_symbols(result, status))
-    {
-        /* TODO */
-        return NULL;
-    }
-
+        goto gefn_error;
 
     if (!find_all_elf_strings(result))
-    {
-        /* TODO */
-        return NULL;
-    }
-
+        goto gefn_error;
 
     if (!g_executable_format_complete_loading(exe_format, status))
         goto gefn_error;
diff --git a/plugins/mobicore/mclf.c b/plugins/mobicore/mclf.c
index 7697d15..653ffaa 100644
--- a/plugins/mobicore/mclf.c
+++ b/plugins/mobicore/mclf.c
@@ -210,24 +210,19 @@ GBinFormat *g_mclf_format_new(GBinContent *content, GExeFormat *parent, GtkStatu
 
     g_binary_format_set_content(G_BIN_FORMAT(result), content);
 
-
-
     if (!read_mclf_header(result, &result->header, result->endian))
-    {
-        /* TODO */
-        return NULL;
-    }
+        goto gmfn_error;
 
+    if (!load_mclf_symbols(result))
+        goto gmfn_error;
 
+    return G_BIN_FORMAT(result);
 
-    if (!load_mclf_symbols(result))
-    {
-        /* TODO */
-        return NULL;
-    }
+ gmfn_error:
 
+    g_object_unref(G_OBJECT(result));
 
-    return G_BIN_FORMAT(result);
+    return NULL;
 
 }
 
-- 
cgit v0.11.2-87-g4458