diff options
Diffstat (limited to 'rbutil')
-rw-r--r-- | rbutil/rbutilqt/installbootloader.cpp | 73 | ||||
-rw-r--r-- | rbutil/rbutilqt/irivertools/irivertools.cpp | 101 | ||||
-rw-r--r-- | rbutil/rbutilqt/irivertools/irivertools.h | 13 |
3 files changed, 109 insertions, 78 deletions
diff --git a/rbutil/rbutilqt/installbootloader.cpp b/rbutil/rbutilqt/installbootloader.cpp index 3f28323c8c..10f6a9f678 100644 --- a/rbutil/rbutilqt/installbootloader.cpp +++ b/rbutil/rbutilqt/installbootloader.cpp | |||
@@ -312,7 +312,7 @@ void BootloaderInstaller::gigabeatPrepare() | |||
312 | QString url = m_bootloaderUrlBase + "/gigabeat/" + m_bootloadername; | 312 | QString url = m_bootloaderUrlBase + "/gigabeat/" + m_bootloadername; |
313 | 313 | ||
314 | m_dp->addItem(tr("Downloading file %1.%2") | 314 | m_dp->addItem(tr("Downloading file %1.%2") |
315 | .arg(QFileInfo(url).baseName(), QFileInfo(url).completeSuffix()),LOGINFO); | 315 | .arg(QFileInfo(url).baseName(), QFileInfo(url).completeSuffix()),LOGINFO); |
316 | 316 | ||
317 | // temporary file needs to be opened to get the filename | 317 | // temporary file needs to be opened to get the filename |
318 | downloadFile.open(); | 318 | downloadFile.open(); |
@@ -325,11 +325,11 @@ void BootloaderInstaller::gigabeatPrepare() | |||
325 | connect(getter, SIGNAL(done(bool)), this, SLOT(downloadDone(bool))); | 325 | connect(getter, SIGNAL(done(bool)), this, SLOT(downloadDone(bool))); |
326 | connect(getter, SIGNAL(dataReadProgress(int, int)), this, SLOT(updateDataReadProgress(int, int))); | 326 | connect(getter, SIGNAL(dataReadProgress(int, int)), this, SLOT(updateDataReadProgress(int, int))); |
327 | connect(m_dp, SIGNAL(aborted()), getter, SLOT(abort())); | 327 | connect(m_dp, SIGNAL(aborted()), getter, SLOT(abort())); |
328 | 328 | ||
329 | getter->getFile(QUrl(url)); | 329 | getter->getFile(QUrl(url)); |
330 | } | 330 | } |
331 | else //UnInstallation | 331 | else //UnInstallation |
332 | { | 332 | { |
333 | QString firmware; | 333 | QString firmware; |
334 | firmware = resolvePathCase(m_mountpoint + "/GBSYSTEM/FWIMG/FWIMG01.DAT"); | 334 | firmware = resolvePathCase(m_mountpoint + "/GBSYSTEM/FWIMG/FWIMG01.DAT"); |
335 | QString firmwareOrig = resolvePathCase(firmware.append(".ORIG")); | 335 | QString firmwareOrig = resolvePathCase(firmware.append(".ORIG")); |
@@ -339,7 +339,7 @@ void BootloaderInstaller::gigabeatPrepare() | |||
339 | // check if original firmware exists | 339 | // check if original firmware exists |
340 | if(!firmwareOrigFI.exists()) | 340 | if(!firmwareOrigFI.exists()) |
341 | { | 341 | { |
342 | m_dp->addItem(tr("Could not find the Original Firmware at: %1") | 342 | m_dp->addItem(tr("Could not find the Original Firmware at: %1") |
343 | .arg(firmwareOrig),LOGERROR); | 343 | .arg(firmwareOrig),LOGERROR); |
344 | emit done(true); | 344 | emit done(true); |
345 | return; | 345 | return; |
@@ -351,7 +351,7 @@ void BootloaderInstaller::gigabeatPrepare() | |||
351 | //remove modified firmware | 351 | //remove modified firmware |
352 | if(!firmwareFile.remove()) | 352 | if(!firmwareFile.remove()) |
353 | { | 353 | { |
354 | m_dp->addItem(tr("Could not remove the Firmware at: %1") | 354 | m_dp->addItem(tr("Could not remove the Firmware at: %1") |
355 | .arg(firmware),LOGERROR); | 355 | .arg(firmware),LOGERROR); |
356 | emit done(true); | 356 | emit done(true); |
357 | return; | 357 | return; |
@@ -360,7 +360,7 @@ void BootloaderInstaller::gigabeatPrepare() | |||
360 | // rename original firmware back | 360 | // rename original firmware back |
361 | if(!firmwareOrigFile.rename(firmware)) | 361 | if(!firmwareOrigFile.rename(firmware)) |
362 | { | 362 | { |
363 | m_dp->addItem(tr("Could not copy the Firmware from: %1 to %2") | 363 | m_dp->addItem(tr("Could not copy the Firmware from: %1 to %2") |
364 | .arg(firmwareOrig,firmware),LOGERROR); | 364 | .arg(firmwareOrig,firmware),LOGERROR); |
365 | emit done(true); | 365 | emit done(true); |
366 | return; | 366 | return; |
@@ -369,7 +369,7 @@ void BootloaderInstaller::gigabeatPrepare() | |||
369 | removeInstallLog(); | 369 | removeInstallLog(); |
370 | 370 | ||
371 | emit done(false); //success | 371 | emit done(false); //success |
372 | } | 372 | } |
373 | 373 | ||
374 | } | 374 | } |
375 | 375 | ||
@@ -1330,9 +1330,22 @@ void BootloaderInstaller::iriverFinish() | |||
1330 | newHex.close(); | 1330 | newHex.close(); |
1331 | 1331 | ||
1332 | // iriver decode | 1332 | // iriver decode |
1333 | if (iriver_decode(m_origfirmware, firmwareBinName, FALSE, STRIP_NONE,m_dp) == -1) | 1333 | int result; |
1334 | { | 1334 | if ((result = iriver_decode(m_origfirmware, firmwareBinName, FALSE, STRIP_NONE)) < 0) |
1335 | m_dp->addItem(tr("Error in descramble"),LOGERROR); | 1335 | { |
1336 | QString error; | ||
1337 | switch(result) { | ||
1338 | case -1: error = tr("Can't open input file"); break; | ||
1339 | case -2: error = tr("Can't open output file"); break; | ||
1340 | case -3: error = tr("invalid file: header length wrong"); break; | ||
1341 | case -4: error = tr("invalid file: unrecognized header"); break; | ||
1342 | case -5: error = tr("invalid file: \"length\" field wrong"); break; | ||
1343 | case -6: error = tr("invalid file: \"length2\" field wrong"); break; | ||
1344 | case -7: error = tr("invalid file: internal checksum error"); break; | ||
1345 | case -8: error = tr("invalid file: \"length3\" field wrong"); break; | ||
1346 | default: error = tr("unknown"); break; | ||
1347 | } | ||
1348 | m_dp->addItem(tr("Error in descramble: %1").arg(error), LOGERROR); | ||
1336 | firmwareBin.remove(); | 1349 | firmwareBin.remove(); |
1337 | newBin.remove(); | 1350 | newBin.remove(); |
1338 | newHex.remove(); | 1351 | newHex.remove(); |
@@ -1340,9 +1353,20 @@ void BootloaderInstaller::iriverFinish() | |||
1340 | return; | 1353 | return; |
1341 | } | 1354 | } |
1342 | // mkboot | 1355 | // mkboot |
1343 | if (!mkboot(firmwareBinName, newBinName, m_tempfilename, origin,m_dp)) | 1356 | if((result = mkboot(firmwareBinName, newBinName, m_tempfilename, origin)) < 0) |
1344 | { | 1357 | { |
1345 | m_dp->addItem(tr("Error in patching"),LOGERROR); | 1358 | QString error; |
1359 | switch(result) { | ||
1360 | case -1: error = tr("could not open input file"); break; | ||
1361 | case -2: error = tr("reading header failed"); break; | ||
1362 | case -3: error = tr("reading firmware failed"); break; | ||
1363 | case -4: error = tr("can't open bootloader file"); break; | ||
1364 | case -5: error = tr("reading bootloader file failed"); break; | ||
1365 | case -6: error = tr("can't open output file"); break; | ||
1366 | case -7: error = tr("writing output file failed"); break; | ||
1367 | } | ||
1368 | m_dp->addItem(tr("Error in patching: %1").arg(error), LOGERROR); | ||
1369 | |||
1346 | firmwareBin.remove(); | 1370 | firmwareBin.remove(); |
1347 | newBin.remove(); | 1371 | newBin.remove(); |
1348 | newHex.remove(); | 1372 | newHex.remove(); |
@@ -1350,9 +1374,22 @@ void BootloaderInstaller::iriverFinish() | |||
1350 | return; | 1374 | return; |
1351 | } | 1375 | } |
1352 | // iriver_encode | 1376 | // iriver_encode |
1353 | if (iriver_encode(newBinName, newHexName, FALSE,m_dp) == -1) | 1377 | if((result = iriver_encode(newBinName, newHexName, FALSE)) < 0) |
1354 | { | 1378 | { |
1355 | m_dp->addItem(tr("Error in scramble"),LOGERROR); | 1379 | QString error; |
1380 | switch(result) { | ||
1381 | case -1: error = tr("Can't open input file"); break; | ||
1382 | case -2: error = tr("Can't open output file"); break; | ||
1383 | case -3: error = tr("invalid file: header length wrong"); break; | ||
1384 | case -4: error = tr("invalid file: unrecognized header"); break; | ||
1385 | case -5: error = tr("invalid file: \"length\" field wrong"); break; | ||
1386 | case -6: error = tr("invalid file: \"length2\" field wrong"); break; | ||
1387 | case -7: error = tr("invalid file: internal checksum error"); break; | ||
1388 | case -8: error = tr("invalid file: \"length3\" field wrong"); break; | ||
1389 | default: error = tr("unknown"); break; | ||
1390 | } | ||
1391 | m_dp->addItem(tr("Error in scramble: %1").arg(error), LOGERROR); | ||
1392 | |||
1356 | firmwareBin.remove(); | 1393 | firmwareBin.remove(); |
1357 | newBin.remove(); | 1394 | newBin.remove(); |
1358 | newHex.remove(); | 1395 | newHex.remove(); |
diff --git a/rbutil/rbutilqt/irivertools/irivertools.cpp b/rbutil/rbutilqt/irivertools/irivertools.cpp index af06e86e06..2bcd9ffb80 100644 --- a/rbutil/rbutilqt/irivertools/irivertools.cpp +++ b/rbutil/rbutilqt/irivertools/irivertools.cpp | |||
@@ -18,9 +18,9 @@ | |||
18 | * | 18 | * |
19 | ****************************************************************************/ | 19 | ****************************************************************************/ |
20 | 20 | ||
21 | #include <QtCore> | ||
21 | #include "irivertools.h" | 22 | #include "irivertools.h" |
22 | 23 | ||
23 | |||
24 | const unsigned char munge[] = { | 24 | const unsigned char munge[] = { |
25 | 0x7a, 0x36, 0xc4, 0x43, 0x49, 0x6b, 0x35, 0x4e, 0xa3, 0x46, 0x25, 0x84, | 25 | 0x7a, 0x36, 0xc4, 0x43, 0x49, 0x6b, 0x35, 0x4e, 0xa3, 0x46, 0x25, 0x84, |
26 | 0x4d, 0x73, 0x74, 0x61 | 26 | 0x4d, 0x73, 0x74, 0x61 |
@@ -47,7 +47,7 @@ const unsigned char header[][16] = { | |||
47 | /* begin mkboot.c excerpt */ | 47 | /* begin mkboot.c excerpt */ |
48 | unsigned char image[0x400000 + 0x220 + 0x400000/0x200]; | 48 | unsigned char image[0x400000 + 0x220 + 0x400000/0x200]; |
49 | 49 | ||
50 | bool mkboot(QString infile, QString outfile,QString bootloader,int origin,ProgressloggerInterface* dp) | 50 | int mkboot(QString infile, QString outfile, QString bootloader, int origin) |
51 | { | 51 | { |
52 | int i; | 52 | int i; |
53 | int len,bllen; | 53 | int len,bllen; |
@@ -59,13 +59,13 @@ bool mkboot(QString infile, QString outfile,QString bootloader,int origin,Progre | |||
59 | QFile f(infile); | 59 | QFile f(infile); |
60 | if(!f.open(QIODevice::ReadOnly)) | 60 | if(!f.open(QIODevice::ReadOnly)) |
61 | { | 61 | { |
62 | dp->addItem("Could not open: %1" + infile,LOGERROR); | 62 | // can't open input file |
63 | return false; | 63 | return -1; |
64 | } | 64 | } |
65 | i = f.read((char*)image,16); | 65 | i = f.read((char*)image,16); |
66 | if(i < 16) { | 66 | if(i < 16) { |
67 | dp->addItem("reading header failed",LOGERROR); | 67 | // reading header failed |
68 | return false; | 68 | return -2; |
69 | } | 69 | } |
70 | 70 | ||
71 | /* This is the length of the binary image without the scrambling | 71 | /* This is the length of the binary image without the scrambling |
@@ -77,8 +77,8 @@ bool mkboot(QString infile, QString outfile,QString bootloader,int origin,Progre | |||
77 | len = binary_length+0x200-16; | 77 | len = binary_length+0x200-16; |
78 | i = f.read((char*)image+16, len); | 78 | i = f.read((char*)image+16, len); |
79 | if(i < len) { | 79 | if(i < len) { |
80 | dp->addItem("reading firmware failed",LOGERROR); | 80 | // reading firmware failed |
81 | return false; | 81 | return -3; |
82 | } | 82 | } |
83 | 83 | ||
84 | f.close(); | 84 | f.close(); |
@@ -86,24 +86,24 @@ bool mkboot(QString infile, QString outfile,QString bootloader,int origin,Progre | |||
86 | f.setFileName(bootloader); | 86 | f.setFileName(bootloader); |
87 | if(!f.open(QIODevice::ReadOnly)) | 87 | if(!f.open(QIODevice::ReadOnly)) |
88 | { | 88 | { |
89 | dp->addItem("Could not open: %1" + bootloader,LOGERROR); | 89 | // can't open bootloader file |
90 | return false; | 90 | return -4; |
91 | } | 91 | } |
92 | 92 | ||
93 | bllen = f.size(); | 93 | bllen = f.size(); |
94 | 94 | ||
95 | i = f.read((char*)image+0x220 + origin, bllen); | 95 | i = f.read((char*)image+0x220 + origin, bllen); |
96 | if(i < bllen) { | 96 | if(i < bllen) { |
97 | dp->addItem("reading bootloader failed",LOGERROR); | 97 | // reading bootloader file failed |
98 | return false; | 98 | return -5; |
99 | } | 99 | } |
100 | 100 | ||
101 | f.close(); | 101 | f.close(); |
102 | f.setFileName(outfile); | 102 | f.setFileName(outfile); |
103 | if(!f.open(QIODevice::WriteOnly)) | 103 | if(!f.open(QIODevice::WriteOnly)) |
104 | { | 104 | { |
105 | dp->addItem("Could not open: %1" + outfile,LOGERROR); | 105 | // can't open output file |
106 | return false; | 106 | return -6; |
107 | } | 107 | } |
108 | 108 | ||
109 | /* Patch the reset vector to start the boot loader */ | 109 | /* Patch the reset vector to start the boot loader */ |
@@ -154,13 +154,13 @@ bool mkboot(QString infile, QString outfile,QString bootloader,int origin,Progre | |||
154 | 154 | ||
155 | i = f.write((char*)image,total_length); | 155 | i = f.write((char*)image,total_length); |
156 | if(i < total_length) { | 156 | if(i < total_length) { |
157 | dp->addItem("writing bootloader failed",LOGERROR); | 157 | // writing bootloader file failed |
158 | return false; | 158 | return -7; |
159 | } | 159 | } |
160 | 160 | ||
161 | f.close(); | 161 | f.close(); |
162 | 162 | ||
163 | return true; | 163 | return 0; |
164 | } | 164 | } |
165 | 165 | ||
166 | /* end mkboot.c excerpt */ | 166 | /* end mkboot.c excerpt */ |
@@ -208,7 +208,7 @@ static void modifyheader( unsigned char * data ) | |||
208 | }; | 208 | }; |
209 | 209 | ||
210 | int iriver_decode(QString infile_name, QString outfile_name, unsigned int modify, | 210 | int iriver_decode(QString infile_name, QString outfile_name, unsigned int modify, |
211 | enum striptype stripmode,ProgressloggerInterface* dp ) | 211 | enum striptype stripmode) |
212 | { | 212 | { |
213 | QFile infile(infile_name); | 213 | QFile infile(infile_name); |
214 | QFile outfile(outfile_name); | 214 | QFile outfile(outfile_name); |
@@ -226,32 +226,30 @@ int iriver_decode(QString infile_name, QString outfile_name, unsigned int modify | |||
226 | 226 | ||
227 | if(!infile.open(QIODevice::ReadOnly)) | 227 | if(!infile.open(QIODevice::ReadOnly)) |
228 | { | 228 | { |
229 | dp->addItem("Could not open: %1" + infile_name,LOGERROR); | 229 | // can't open input file |
230 | return -1; | 230 | return -1; |
231 | } | 231 | } |
232 | if(!outfile.open(QIODevice::WriteOnly)) | 232 | if(!outfile.open(QIODevice::WriteOnly)) |
233 | { | 233 | { |
234 | dp->addItem("Could not open: %1" + outfile_name,LOGERROR); | 234 | // can't open output file |
235 | return -1; | 235 | return -2; |
236 | } | 236 | } |
237 | lenread = infile.read( (char*)headerdata, 512); | 237 | lenread = infile.read( (char*)headerdata, 512); |
238 | if( lenread != 512 ) | 238 | if( lenread != 512 ) |
239 | { | 239 | { |
240 | dp->addItem("This doesn't look like a valid encrypted iHP" | 240 | // header length doesn't match |
241 | "firmware - reason: header length.",LOGERROR); | ||
242 | infile.close(); | 241 | infile.close(); |
243 | outfile.close(); | 242 | outfile.close(); |
244 | return -1; | 243 | return -3; |
245 | }; | 244 | }; |
246 | 245 | ||
247 | i = testheader( headerdata ); | 246 | i = testheader( headerdata ); |
248 | if( i == -1 ) | 247 | if( i == -1 ) |
249 | { | 248 | { |
250 | dp->addItem("This firmware is for an unknown model, or is not" | 249 | // header unknown |
251 | " a valid encrypted iHP firmware.",LOGERROR); | ||
252 | infile.close(); | 250 | infile.close(); |
253 | outfile.close(); | 251 | outfile.close(); |
254 | return -1; | 252 | return -4; |
255 | }; | 253 | }; |
256 | fprintf( stderr, "Model %s\n", models[ i ] ); | 254 | fprintf( stderr, "Model %s\n", models[ i ] ); |
257 | 255 | ||
@@ -270,11 +268,10 @@ int iriver_decode(QString infile_name, QString outfile_name, unsigned int modify | |||
270 | dwLength2>>9 != dwLength3 || | 268 | dwLength2>>9 != dwLength3 || |
271 | dwLength2+dwLength3+512 != dwLength1 ) | 269 | dwLength2+dwLength3+512 != dwLength1 ) |
272 | { | 270 | { |
273 | dp->addItem("This doesn't look like a valid encrypted " | 271 | // file 'length' data is wrong |
274 | "iHP firmware - reason: file 'length' data.",LOGERROR); | ||
275 | infile.close(); | 272 | infile.close(); |
276 | outfile.close(); | 273 | outfile.close(); |
277 | return -1; | 274 | return -5; |
278 | }; | 275 | }; |
279 | 276 | ||
280 | pChecksums = ppChecksums = (unsigned char *)( malloc( dwLength3 ) ); | 277 | pChecksums = ppChecksums = (unsigned char *)( malloc( dwLength3 ) ); |
@@ -332,11 +329,10 @@ int iriver_decode(QString infile_name, QString outfile_name, unsigned int modify | |||
332 | 329 | ||
333 | if( fp != dwLength2 ) | 330 | if( fp != dwLength2 ) |
334 | { | 331 | { |
335 | dp->addItem("This doesn't look like a valid encrypted " | 332 | // 'length2' field mismatch |
336 | "iHP firmware - reason: 'length2' mismatch.",LOGERROR); | ||
337 | infile.close(); | 333 | infile.close(); |
338 | outfile.close(); | 334 | outfile.close(); |
339 | return -1; | 335 | return -6; |
340 | }; | 336 | }; |
341 | 337 | ||
342 | fp = 0; | 338 | fp = 0; |
@@ -349,22 +345,20 @@ int iriver_decode(QString infile_name, QString outfile_name, unsigned int modify | |||
349 | outfile.write((char*) blockdata, lenread ); | 345 | outfile.write((char*) blockdata, lenread ); |
350 | if( memcmp( ppChecksums, blockdata, lenread ) != 0 ) | 346 | if( memcmp( ppChecksums, blockdata, lenread ) != 0 ) |
351 | { | 347 | { |
352 | dp->addItem("This doesn't look like a valid encrypted " | 348 | // file checksum wrong |
353 | "iHP firmware - reason: Checksum mismatch!",LOGERROR); | ||
354 | infile.close(); | 349 | infile.close(); |
355 | outfile.close(); | 350 | outfile.close(); |
356 | return -1; | 351 | return -7; |
357 | }; | 352 | }; |
358 | ppChecksums += lenread; | 353 | ppChecksums += lenread; |
359 | }; | 354 | }; |
360 | 355 | ||
361 | if( fp != dwLength3 ) | 356 | if( fp != dwLength3 ) |
362 | { | 357 | { |
363 | dp->addItem("This doesn't look like a valid encrypted " | 358 | // 'length3' field mismatch |
364 | "iHP firmware - reason: 'length3' mismatch.",LOGERROR); | ||
365 | infile.close(); | 359 | infile.close(); |
366 | outfile.close(); | 360 | outfile.close(); |
367 | return -1; | 361 | return -8; |
368 | }; | 362 | }; |
369 | 363 | ||
370 | 364 | ||
@@ -392,7 +386,7 @@ int iriver_decode(QString infile_name, QString outfile_name, unsigned int modify | |||
392 | 386 | ||
393 | }; | 387 | }; |
394 | 388 | ||
395 | int iriver_encode(QString infile_name, QString outfile_name, unsigned int modify,ProgressloggerInterface* dp ) | 389 | int iriver_encode(QString infile_name, QString outfile_name, unsigned int modify) |
396 | { | 390 | { |
397 | QFile infile(infile_name); | 391 | QFile infile(infile_name); |
398 | QFile outfile(outfile_name); | 392 | QFile outfile(outfile_name); |
@@ -409,22 +403,23 @@ int iriver_encode(QString infile_name, QString outfile_name, unsigned int modify | |||
409 | 403 | ||
410 | if(!infile.open(QIODevice::ReadOnly)) | 404 | if(!infile.open(QIODevice::ReadOnly)) |
411 | { | 405 | { |
412 | dp->addItem("Could not open: %1" + infile_name,LOGERROR); | 406 | // can't open input file |
413 | return -1; | 407 | return -1; |
414 | } | 408 | } |
415 | if(!outfile.open(QIODevice::WriteOnly)) | 409 | if(!outfile.open(QIODevice::WriteOnly)) |
416 | { | 410 | { |
417 | dp->addItem("Could not open: %1" + outfile_name,LOGERROR); | 411 | // can't open output file |
418 | return -1; | 412 | infile.close(); |
413 | return -2; | ||
419 | } | 414 | } |
420 | 415 | ||
421 | lenread = infile.read((char*) headerdata, 512 ); | 416 | lenread = infile.read((char*) headerdata, 512 ); |
422 | if( lenread != 512 ) | 417 | if( lenread != 512 ) |
423 | { | 418 | { |
424 | dp->addItem("This doesn't look like a valid decoded " | 419 | // header length error |
425 | "iHP firmware - reason: header length.",LOGERROR); | ||
426 | infile.close(); | 420 | infile.close(); |
427 | outfile.close(); | 421 | outfile.close(); |
422 | return -3; | ||
428 | }; | 423 | }; |
429 | 424 | ||
430 | if( modify ) | 425 | if( modify ) |
@@ -435,10 +430,10 @@ int iriver_encode(QString infile_name, QString outfile_name, unsigned int modify | |||
435 | i = testheader( headerdata ); | 430 | i = testheader( headerdata ); |
436 | if( i == -1 ) | 431 | if( i == -1 ) |
437 | { | 432 | { |
438 | dp->addItem("This firmware is for an unknown model, or is not" | 433 | // header verification error |
439 | " a valid decoded iHP firmware.",LOGERROR); | ||
440 | infile.close(); | 434 | infile.close(); |
441 | outfile.close(); | 435 | outfile.close(); |
436 | return -4; | ||
442 | }; | 437 | }; |
443 | fprintf( stderr, "Model %s\n", models[ i ] ); | 438 | fprintf( stderr, "Model %s\n", models[ i ] ); |
444 | 439 | ||
@@ -456,10 +451,10 @@ int iriver_encode(QString infile_name, QString outfile_name, unsigned int modify | |||
456 | dwLength3 > dwLength1 || | 451 | dwLength3 > dwLength1 || |
457 | dwLength2+dwLength3+512 != dwLength1 ) | 452 | dwLength2+dwLength3+512 != dwLength1 ) |
458 | { | 453 | { |
459 | dp->addItem("This doesn't look like a valid decoded " | 454 | // file 'length' error |
460 | "iHP firmware - reason:file 'length' data.",LOGERROR); | ||
461 | infile.close(); | 455 | infile.close(); |
462 | outfile.close(); | 456 | outfile.close(); |
457 | return -5; | ||
463 | }; | 458 | }; |
464 | 459 | ||
465 | pChecksums = ppChecksums = (unsigned char *)( malloc( dwLength3 ) ); | 460 | pChecksums = ppChecksums = (unsigned char *)( malloc( dwLength3 ) ); |
@@ -494,10 +489,10 @@ int iriver_encode(QString infile_name, QString outfile_name, unsigned int modify | |||
494 | 489 | ||
495 | if( fp != dwLength2 ) | 490 | if( fp != dwLength2 ) |
496 | { | 491 | { |
497 | dp->addItem("This doesn't look like a valid decoded " | 492 | // file 'length1' mismatch |
498 | "iHP firmware - reason: 'length1' mismatch.",LOGERROR); | ||
499 | infile.close(); | 493 | infile.close(); |
500 | outfile.close(); | 494 | outfile.close(); |
495 | return -6; | ||
501 | }; | 496 | }; |
502 | 497 | ||
503 | /* write out remainder w/out applying descrambler */ | 498 | /* write out remainder w/out applying descrambler */ |
@@ -514,10 +509,10 @@ int iriver_encode(QString infile_name, QString outfile_name, unsigned int modify | |||
514 | 509 | ||
515 | if( fp != dwLength3 ) | 510 | if( fp != dwLength3 ) |
516 | { | 511 | { |
517 | dp->addItem("This doesn't look like a valid decoded " | 512 | // 'length2' field mismatch |
518 | "iHP firmware - 'length2' mismatch.",LOGERROR); | ||
519 | infile.close(); | 513 | infile.close(); |
520 | outfile.close(); | 514 | outfile.close(); |
515 | return -8; | ||
521 | }; | 516 | }; |
522 | 517 | ||
523 | fprintf( stderr, "File encoded successfully and checksum table built!\n" ); | 518 | fprintf( stderr, "File encoded successfully and checksum table built!\n" ); |
diff --git a/rbutil/rbutilqt/irivertools/irivertools.h b/rbutil/rbutilqt/irivertools/irivertools.h index d0d1de6730..4fae06e6d7 100644 --- a/rbutil/rbutilqt/irivertools/irivertools.h +++ b/rbutil/rbutilqt/irivertools/irivertools.h | |||
@@ -25,7 +25,6 @@ | |||
25 | #include <QtCore> | 25 | #include <QtCore> |
26 | 26 | ||
27 | #include "md5sum.h" | 27 | #include "md5sum.h" |
28 | #include "progressloggerinterface.h" | ||
29 | 28 | ||
30 | #define ESTF_SIZE 32 | 29 | #define ESTF_SIZE 32 |
31 | 30 | ||
@@ -37,18 +36,18 @@ struct sumpairs { | |||
37 | 36 | ||
38 | enum striptype | 37 | enum striptype |
39 | { | 38 | { |
40 | STRIP_NONE, | 39 | STRIP_NONE, |
41 | STRIP_HEADER_CHECKSUM, | 40 | STRIP_HEADER_CHECKSUM, |
42 | STRIP_HEADER_CHECKSUM_ESTF | 41 | STRIP_HEADER_CHECKSUM_ESTF |
43 | }; | 42 | }; |
44 | 43 | ||
45 | /* protos for iriver.c */ | 44 | /* protos for iriver.c */ |
46 | 45 | ||
47 | int intable(char *md5, struct sumpairs *table, int len); | 46 | int intable(char *md5, struct sumpairs *table, int len); |
48 | 47 | ||
49 | bool mkboot(QString infile, QString outfile,QString bootloader,int origin,ProgressloggerInterface* dp); | 48 | int mkboot(QString infile, QString outfile,QString bootloader,int origin); |
50 | int iriver_decode(QString infile_name, QString outfile_name, unsigned int modify, | 49 | int iriver_decode(QString infile_name, QString outfile_name, unsigned int modify, |
51 | enum striptype stripmode,ProgressloggerInterface* dp ); | 50 | enum striptype stripmode); |
52 | int iriver_encode(QString infile_name, QString outfile_name, unsigned int modify,ProgressloggerInterface* dp); | 51 | int iriver_encode(QString infile_name, QString outfile_name, unsigned int modify); |
53 | 52 | ||
54 | #endif // IRIVERTOOLS_H_INCLUDED | 53 | #endif // IRIVERTOOLS_H_INCLUDED |