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 <bernhard.nortmann@web.de>
This commit is contained in:
Bernhard Nortmann 2016-05-26 00:02:01 +02:00
parent 6271d370af
commit a93b5e3636

View File

@ -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);