[syslinux] [PATCH] ISOLINUX: Fix checksum calculation in lzo/prepcore.c

Thomas Schmitt scdbackup at gmx.net
Fri Jan 26 12:20:41 PST 2018


The prescription for Boot Info Table says that checksumming begins
at byte 64 of isolinux.bin. When prepcore writes isolinux.bin it begins
copying bytes from the input file at the offset given by variable "start".
But it begins checksumming at offset 64 of the input file.
The problem exists since introduction of prepcore by release 4.00.
ISO 9660 programs usually fix it when they write the Boot Info Table.

Signed-off-by: Thomas Schmitt <scdbackup at gmx.net>
---
--- a/lzo/prepcore.c
+++ b/lzo/prepcore.c
@@ -331,7 +331,7 @@ int main(int argc, char *argv[])
        unsigned int ptr;
        outfile_len =
            ((offset - start + out_len + 2047) & ~2047) - (offset - start);
-       for (ptr = 64; ptr < offset; ptr += 4)
+       for (ptr = start + 64; ptr < offset; ptr += 4)
            csum += get_32((uint32_t *) (infile + ptr));
        for (ptr = 0; ptr < outfile_len; ptr += 4)
            csum += get_32((uint32_t *) (out + ptr));
--



More information about the Syslinux mailing list