firmware-utils/trx: fix two bugs
authorjuhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sat, 30 Nov 2013 18:30:56 +0000 (18:30 +0000)
committerjuhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sat, 30 Nov 2013 18:30:56 +0000 (18:30 +0000)
 - fix crc32 calculation if -F was enabled.

 - don't convert the crc32 to little endian twice.

Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@38962 3c298f89-4303-0410-b956-a3cf2f4a3e73

tools/firmware-utils/src/trx.c

index 8e95d98..e3b6a39 100644 (file)
@@ -273,11 +273,10 @@ int main(int argc, char **argv)
        }
 
        p->crc32 = crc32buf((char *) &p->flag_version,
        }
 
        p->crc32 = crc32buf((char *) &p->flag_version,
-                                               (fsmark)?fsmark:cur_len - offsetof(struct trx_header, flag_version));
+                                               ((fsmark)?fsmark:cur_len) - offsetof(struct trx_header, flag_version));
        p->crc32 = STORE32_LE(p->crc32);
 
        p->len = STORE32_LE((fsmark) ? fsmark : cur_len);
        p->crc32 = STORE32_LE(p->crc32);
 
        p->len = STORE32_LE((fsmark) ? fsmark : cur_len);
-       p->len = STORE32_LE(p->len);
 
        /* restore TRXv2 bin-header */
        if (trx_version == 2) {
 
        /* restore TRXv2 bin-header */
        if (trx_version == 2) {