From a93b5e363664ae427a0462dc335518452cd36647 Mon Sep 17 00:00:00 2001 From: Bernhard Nortmann Date: Thu, 26 May 2016 00:02:01 +0200 Subject: [PATCH] fexc: More relaxed version data check in script_bin.c Recent original .bin files showed up with a version[0] of 49152 = 0xC000, which won't pass our current sanity checks. Restrict version[0] check to lower 14 bits, to make it pass again. (This might require further investigation in the future, as it's possible that this particular header field actually isn't related to version data at all.) Fixes #51. Signed-off-by: Bernhard Nortmann --- script_bin.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/script_bin.c b/script_bin.c index 6a06684..2d9874f 100644 --- a/script_bin.c +++ b/script_bin.c @@ -318,7 +318,7 @@ int script_decompile_bin(void *bin, size_t bin_size, unsigned int i; struct script_bin_head *head = bin; - if ((head->version[0] > SCRIPT_BIN_VERSION_LIMIT) || + if (((head->version[0] & 0x3FFF) > SCRIPT_BIN_VERSION_LIMIT) || (head->version[1] > SCRIPT_BIN_VERSION_LIMIT) || (head->version[2] > SCRIPT_BIN_VERSION_LIMIT)) { pr_err("Malformed data: version %u.%u.%u.\n", @@ -333,7 +333,7 @@ int script_decompile_bin(void *bin, size_t bin_size, } pr_info("%s: version: %u.%u.%u\n", filename, - head->version[0], head->version[1], head->version[2]); + head->version[0] & 0x3FFF, head->version[1], head->version[2]); pr_info("%s: size: %zu (%u sections)\n", filename, bin_size, head->sections);