stop build when an error occurs and when BUILDLOG is set (#5160)
[openwrt.git] / tools / firmware-utils / src / imagetag.c
index a5b7a93..b392cab 100644 (file)
@@ -153,7 +153,7 @@ int tagfile(const char *kernel, const char *rootfs, const char *bin,
        struct imagetag tag;
        struct kernelhdr khdr;
        FILE *kernelfile = NULL, *rootfsfile = NULL, *binfile;
-       size_t kerneloff, kernellen, rootfsoff, rootfslen, read, imagelen;
+       size_t kerneloff, kernellen, rootfsoff, rootfslen, read, imagelen, rootfsoffpadlen;
        uint8_t readbuf[1024];
        uint32_t crc = IMAGETAG_CRC_START;
        const uint32_t deadcode = htonl(DEADCODE);
@@ -203,6 +203,7 @@ int tagfile(const char *kernel, const char *rootfs, const char *bin,
        rootfslen = getlen(rootfsfile);
        rootfslen = (rootfslen % flash_bs) > 0 ? (((rootfslen / flash_bs) + 1) * flash_bs) : rootfslen;
        imagelen = rootfsoff + rootfslen - kerneloff + sizeof(deadcode);
+       rootfsoffpadlen = rootfsoff - (kerneloff + kernellen);
 
        /* Seek to the start of the kernel */
        fseek(binfile, kerneloff - fwaddr, SEEK_SET);
@@ -232,7 +233,7 @@ int tagfile(const char *kernel, const char *rootfs, const char *bin,
        /* Choose and compute the CRC32 that should be inserted in the tag */
        /* and fill reserved tag following profile specification           */
        if ( profile && (strcmp(profile, "alice") == 0)) {
-               crc = compute_crc32(crc, binfile, kerneloff - fwaddr, kernellen);
+               crc = compute_crc32(crc, binfile, kerneloff - fwaddr, kernellen + rootfsoffpadlen);
                /* Should fill alice_data and put them on reserved1 */
        }
        else {
@@ -260,7 +261,7 @@ int tagfile(const char *kernel, const char *rootfs, const char *bin,
 
        if (kernelfile) {
                sprintf(tag.kernel.address, "%lu", kerneloff);
-               sprintf(tag.kernel.len, "%lu", kernellen);
+               sprintf(tag.kernel.len, "%lu", kernellen + rootfsoffpadlen);
        }
 
        if (rootfsfile) {
This page took 0.034866 seconds and 4 git commands to generate.