mtd: partitions: redboot: Added conversion of operands to a larger type
authorDenis Arefev <arefev@swemel.ru>
Fri, 15 Mar 2024 09:37:58 +0000 (12:37 +0300)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Mon, 25 Mar 2024 10:17:16 +0000 (11:17 +0100)
The value of an arithmetic expression directory * master->erasesize is
subject to overflow due to a failure to cast operands to a larger data
type before perfroming arithmetic

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Signed-off-by: Denis Arefev <arefev@swemel.ru>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20240315093758.20790-1-arefev@swemel.ru
drivers/mtd/parsers/redboot.c

index a16b42a..3b55b67 100644 (file)
@@ -102,7 +102,7 @@ nogood:
                        offset -= master->erasesize;
                }
        } else {
-               offset = directory * master->erasesize;
+               offset = (unsigned long) directory * master->erasesize;
                while (mtd_block_isbad(master, offset)) {
                        offset += master->erasesize;
                        if (offset == master->size)