summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2013-01-26 16:50:50 +0000
committerAmaury Pouly <amaury.pouly@gmail.com>2013-01-26 18:24:50 +0000
commit5b00e59614f584cc6dc440cc064097a2fb7321f7 (patch)
tree2719e449a312351649f73c1cdf00322fe33beb2d
parent75df5c2684ea146e2cdb923b2ef8f92309a1a3e1 (diff)
downloadrockbox-5b00e59614f584cc6dc440cc064097a2fb7321f7.tar.gz
rockbox-5b00e59614f584cc6dc440cc064097a2fb7321f7.zip
imxtools/sbtools: fix file type detection
Change-Id: I872e98f5810df3ecc975e025385f9c5ca7b47a44
-rw-r--r--utils/imxtools/sbtools/sbtoelf.c12
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