firmware-utils: mkmylofw: fix blocks padding
authorRafał Miłecki <rafal@milecki.pl>
Tue, 13 Apr 2021 11:53:57 +0000 (13:53 +0200)
committerRafał Miłecki <rafal@milecki.pl>
Tue, 13 Apr 2021 12:00:49 +0000 (14:00 +0200)
The old code didn't make sense as it was using "len" variable which was
guaranteed to be always 0. Loop right above broken code is:
while (len > 0) { }

With this recent ALIGN macro fix this resulted in subtracting block size
from 0 and calling write_out_padding() with a negative length.

To calculate amount of bytes needed for padding & alignment it should be
enough to use % 4.

Fixes: a2f66229450d ("firmware-utils: fix few random warnings")
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
tools/firmware-utils/src/mkmylofw.c

index 5722365ee3bd605adef495b52c154b47a632b4d0..93eab202d9a2e38a1b4b154fe321e3a1383097fe 100644 (file)
@@ -583,7 +583,7 @@ write_out_file(FILE *outfile, struct fw_block *block, uint32_t *crc)
        fclose(f);
 
        /* align next block on a 4 byte boundary */
-       len = ALIGN(len,4) - block->size;
+       len = block->size % 4;
        if (write_out_padding(outfile, len, 0xFF, crc))
                return -1;