diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2013-01-26 16:50:50 +0000 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2013-01-26 18:24:50 +0000 |
commit | 5b00e59614f584cc6dc440cc064097a2fb7321f7 (patch) | |
tree | 2719e449a312351649f73c1cdf00322fe33beb2d | |
parent | 75df5c2684ea146e2cdb923b2ef8f92309a1a3e1 (diff) | |
download | rockbox-5b00e59614f584cc6dc440cc064097a2fb7321f7.tar.gz rockbox-5b00e59614f584cc6dc440cc064097a2fb7321f7.zip |
imxtools/sbtools: fix file type detection
Change-Id: I872e98f5810df3ecc975e025385f9c5ca7b47a44
-rw-r--r-- | utils/imxtools/sbtools/sbtoelf.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/utils/imxtools/sbtools/sbtoelf.c b/utils/imxtools/sbtools/sbtoelf.c index c61650d274..98bb2dcc45 100644 --- a/utils/imxtools/sbtools/sbtoelf.c +++ b/utils/imxtools/sbtools/sbtoelf.c | |||
@@ -267,6 +267,9 @@ enum sb_version_guess_t guess_sb_version(const char *filename) | |||
267 | FILE *f = fopen(filename, "rb"); | 267 | FILE *f = fopen(filename, "rb"); |
268 | if(f == NULL) | 268 | if(f == NULL) |
269 | bugp("Cannot open file for reading\n"); | 269 | bugp("Cannot open file for reading\n"); |
270 | fseek(f, 0, SEEK_END); | ||
271 | long file_size = ftell(f); | ||
272 | fseek(f, 0, SEEK_SET); | ||
270 | // check signature | 273 | // check signature |
271 | uint8_t sig[4]; | 274 | uint8_t sig[4]; |
272 | if(fseek(f, 20, SEEK_SET)) | 275 | if(fseek(f, 20, SEEK_SET)) |
@@ -283,12 +286,13 @@ enum sb_version_guess_t guess_sb_version(const char *filename) | |||
283 | ret(SB_VERSION_UNK); | 286 | ret(SB_VERSION_UNK); |
284 | if(hdr_size == 0x34) | 287 | if(hdr_size == 0x34) |
285 | ret(SB_VERSION_1); | 288 | ret(SB_VERSION_1); |
286 | // check header size (v2) | 289 | // check image size (v2) |
287 | if(fseek(f, 32, SEEK_SET)) | 290 | uint32_t img_size; |
291 | if(fseek(f, 28, SEEK_SET)) | ||
288 | ret(SB_VERSION_UNK); | 292 | ret(SB_VERSION_UNK); |
289 | if(fread(&hdr_size, 4, 1, f) != 1) | 293 | if(fread(&img_size, 4, 1, f) != 1) |
290 | ret(SB_VERSION_UNK); | 294 | ret(SB_VERSION_UNK); |
291 | if(hdr_size == 0xc) | 295 | if(img_size * 16 == (uint32_t)file_size) |
292 | ret(SB_VERSION_2); | 296 | ret(SB_VERSION_2); |
293 | ret(SB_VERSION_UNK); | 297 | ret(SB_VERSION_UNK); |
294 | #undef ret | 298 | #undef ret |