diff options
Diffstat (limited to 'apps/plugins')
-rw-r--r-- | apps/plugins/crypt_firmware.c | 14 | ||||
-rw-r--r-- | apps/plugins/iriver_flash.c | 9 |
2 files changed, 3 insertions, 20 deletions
diff --git a/apps/plugins/crypt_firmware.c b/apps/plugins/crypt_firmware.c index f9bdd4d031..14e9c2be96 100644 --- a/apps/plugins/crypt_firmware.c +++ b/apps/plugins/crypt_firmware.c | |||
@@ -36,8 +36,7 @@ | |||
36 | */ | 36 | */ |
37 | 37 | ||
38 | #include "plugin.h" | 38 | #include "plugin.h" |
39 | 39 | #include "checksum.h" | |
40 | |||
41 | 40 | ||
42 | static void aes_encrypt(void* data, uint32_t size) | 41 | static void aes_encrypt(void* data, uint32_t size) |
43 | { | 42 | { |
@@ -133,17 +132,6 @@ static void put_uint32be(unsigned char* buf, uint32_t x) | |||
133 | buf[3] = x & 0xff; | 132 | buf[3] = x & 0xff; |
134 | } | 133 | } |
135 | 134 | ||
136 | static uint32_t calc_checksum(uint32_t sum, unsigned char* buf, int len) | ||
137 | { | ||
138 | int i; | ||
139 | |||
140 | for (i = 0; i < len ; i++) { | ||
141 | sum += buf[i]; | ||
142 | } | ||
143 | |||
144 | return sum; | ||
145 | } | ||
146 | |||
147 | enum plugin_status plugin_start(const void* parameter) | 135 | enum plugin_status plugin_start(const void* parameter) |
148 | { | 136 | { |
149 | int fd; | 137 | int fd; |
diff --git a/apps/plugins/iriver_flash.c b/apps/plugins/iriver_flash.c index 9454ac63c8..152ac339ff 100644 --- a/apps/plugins/iriver_flash.c +++ b/apps/plugins/iriver_flash.c | |||
@@ -23,6 +23,7 @@ | |||
23 | ****************************************************************************/ | 23 | ****************************************************************************/ |
24 | #include "plugin.h" | 24 | #include "plugin.h" |
25 | #include "lib/helper.h" | 25 | #include "lib/helper.h" |
26 | #include "checksum.h" | ||
26 | 27 | ||
27 | /* | 28 | /* |
28 | * Flash commands may rely on null pointer dereferences to work correctly. | 29 | * Flash commands may rely on null pointer dereferences to work correctly. |
@@ -395,7 +396,6 @@ static bool load_firmware(const char* filename, enum firmware firmware, | |||
395 | { | 396 | { |
396 | uint32_t checksum; | 397 | uint32_t checksum; |
397 | uint8_t model[4]; | 398 | uint8_t model[4]; |
398 | uint32_t sum; | ||
399 | 399 | ||
400 | /* subtract the header length */ | 400 | /* subtract the header length */ |
401 | fd_len -= sizeof(checksum) + sizeof(model); | 401 | fd_len -= sizeof(checksum) + sizeof(model); |
@@ -418,13 +418,8 @@ static bool load_firmware(const char* filename, enum firmware firmware, | |||
418 | goto bail; | 418 | goto bail; |
419 | } | 419 | } |
420 | 420 | ||
421 | /* calculate the checksum */ | ||
422 | sum = MODEL_NUMBER; | ||
423 | for (off_t i = 0; i < fd_len; i++) | ||
424 | sum += buffer[i]; | ||
425 | |||
426 | /* verify the checksum */ | 421 | /* verify the checksum */ |
427 | if (sum != checksum) | 422 | if (!verify_checksum(checksum, buffer, fd_len)) |
428 | { | 423 | { |
429 | msg = "Aborting: checksum mismatch"; | 424 | msg = "Aborting: checksum mismatch"; |
430 | goto bail; | 425 | goto bail; |