summaryrefslogtreecommitdiff
path: root/firmware/common/rb-loader.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/common/rb-loader.c')
-rw-r--r--firmware/common/rb-loader.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/firmware/common/rb-loader.c b/firmware/common/rb-loader.c
index 430ed6ec7b..0256f21884 100644
--- a/firmware/common/rb-loader.c
+++ b/firmware/common/rb-loader.c
@@ -58,16 +58,15 @@ static int load_firmware_filename(unsigned char* buf,
58 goto end; 58 goto end;
59 } 59 }
60 60
61 lseek(fd, FIRMWARE_OFFSET_FILE_CRC, SEEK_SET); 61 /* read 32-bit checksum followed by 4-byte model name,
62 62 * this is the "scramble -add" header written by tools/scramble */
63 if (read(fd, &chksum, 4) < 4) 63 if (read(fd, buf, 8) < 8)
64 { 64 {
65 ret = EREAD_CHKSUM_FAILED; 65 ret = EREAD_CHKSUM_FAILED;
66 goto end; 66 goto end;
67 } 67 }
68 chksum = betoh32(chksum); /* Rockbox checksums are big-endian */
69 68
70 lseek(fd, FIRMWARE_OFFSET_FILE_DATA, SEEK_SET); 69 chksum = load_be32(buf); /* Rockbox checksums are big-endian */
71 70
72 if (read(fd, buf, len) < len) 71 if (read(fd, buf, len) < len)
73 { 72 {