summaryrefslogtreecommitdiff
path: root/src/format/executable.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2017-07-15 09:58:58 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2017-07-15 09:58:58 (GMT)
commit52d721c47cce927345cb5e66674ca2cc48d75349 (patch)
treefbfb4e38586f96f17e282b45851c70edaa5e0536 /src/format/executable.c
parentf3184725ec750317c04f1989ac83c2bbc75865a9 (diff)
Truncated binary portions to fit the binary content size if needed.
Diffstat (limited to 'src/format/executable.c')
-rw-r--r--src/format/executable.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/format/executable.c b/src/format/executable.c
index fe3448d..f121f5b 100644
--- a/src/format/executable.c
+++ b/src/format/executable.c
@@ -30,6 +30,7 @@
#include "executable-int.h"
#include "format.h"
+#include "../gui/panels/log.h"
@@ -340,6 +341,17 @@ bool g_executable_format_complete_loading(GExeFormat *format, GtkStatusStack *st
void g_exe_format_include_portion(GExeFormat *format, GBinPortion *portion)
{
+ phys_t max; /* Position hors limite */
+ bool truncated; /* Modification faite ? */
+
+ max = g_binary_content_compute_size(G_BIN_FORMAT(format)->content);
+
+ truncated = g_binary_portion_limit_range(portion, max);
+
+ if (truncated)
+ log_variadic_message(LMT_BAD_BINARY, _("Truncated binary portion '%s' to fit the binary content size!"),
+ g_binary_portion_get_desc(portion));
+
g_mutex_lock(&format->mutex);
g_binary_portion_include(format->portions, portion);