diff options
author | Heinrich Schuchardt <heinrich.schuchardt@canonical.com> | 2024-01-11 08:31:55 +0100 |
---|---|---|
committer | Dario Binacchi <dario.binacchi@amarulasolutions.com> | 2024-01-15 08:58:24 +0100 |
commit | 6b37320c7625a7742a6aeac4f9835356b782633c (patch) | |
tree | 7ca66a358a5e145723e0998eb6800cc5a72ac0b6 /cmd | |
parent | 697758e7c81131da6db0e3b10515019fe3aca8c9 (diff) |
cmd: mtd: avoid unintentional integer overflow
mtd dump beyond 4 GiB will show incorrect results.
Multiplying two u32 will yield a u32. Add a missing cast.
Fixes: 5db66b3aee6f ("cmd: mtd: add 'mtd' command")
Addresses-Coverity-ID: 477205 ("Unintentional integer overflow")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/all/20240111073155.19545-1-heinrich.schuchardt@canonical.com
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/mtd.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -77,7 +77,7 @@ static void mtd_dump_device_buf(struct mtd_info *mtd, u64 start_off, if (has_pages) { for (page = 0; page < npages; page++) { - u64 data_off = page * mtd->writesize; + u64 data_off = (u64)page * mtd->writesize; printf("\nDump %d data bytes from 0x%08llx:\n", mtd->writesize, start_off + data_off); @@ -85,7 +85,7 @@ static void mtd_dump_device_buf(struct mtd_info *mtd, u64 start_off, mtd->writesize, start_off + data_off); if (woob) { - u64 oob_off = page * mtd->oobsize; + u64 oob_off = (u64)page * mtd->oobsize; printf("Dump %d OOB bytes from page at 0x%08llx:\n", mtd->oobsize, start_off + data_off); |