Fix airlink image generation tool
[openwrt/svn-archive/archive.git] / tools / firmware-utils / src / airlink.c
index c24a9e320b767ea7290de5072db311aa9368519c..657c971761f6960b4a54303c4b5197994ee609f6 100644 (file)
@@ -319,14 +319,10 @@ int main(int argc, char **argv)
                unsigned long sum2 = buf[-0x8] | ((u32)buf[-0x7] << 8) | ((u32)buf[-0x6] << 16) | ((u32)buf[-0x5] << 24);
                *((u32 *) & buf[-0x8]) = 0L;
                sum = crc32(buf - 0x4, len - 0x4);
                unsigned long sum2 = buf[-0x8] | ((u32)buf[-0x7] << 8) | ((u32)buf[-0x6] << 16) | ((u32)buf[-0x5] << 24);
                *((u32 *) & buf[-0x8]) = 0L;
                sum = crc32(buf - 0x4, len - 0x4);
-               sum = htonl(sum);
                printf("CRC32 sum2 - (%x, %x, %x)\n", sum, sum2,
                       len - 0x4);
                lseek(fd, 0, SEEK_SET);
                printf("CRC32 sum2 - (%x, %x, %x)\n", sum, sum2,
                       len - 0x4);
                lseek(fd, 0, SEEK_SET);
-               buf[-0x8] = sum & 0xff;
-               buf[-0x7] = (sum >> 8) & 0xff;
-               buf[-0x6] = (sum >> 16) & 0xff;
-               buf[-0x5] = (sum >> 24) & 0xff;
+               *((u32 *) & buf[-0x8]) = htonl(sum);
                write(fd, &buf[-0x8], 0x4);
                buf -= 8;
        }
                write(fd, &buf[-0x8], 0x4);
                buf -= 8;
        }