[PATCH 08/10] mtd-utils: nandwrite: prevent 32-bit overflow
Brian Norris
computersforpeace at gmail.com
Wed Nov 3 04:27:25 EDT 2010
For large block- and page-sizes, the multiplication of ebsize_aligned
and pagelen can overflow a 32-bit integer. This overflow can be
prevented by a simple change in order of operations (i.e., do division
first).
Since ebsize_aligned is always a multiple of mtd.min_io_size, this
produces no change in results.
Signed-off-by: Brian Norris <computersforpeace at gmail.com>
---
nandwrite.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/nandwrite.c b/nandwrite.c
index 8ec5afe..364acdf 100644
--- a/nandwrite.c
+++ b/nandwrite.c
@@ -441,7 +441,7 @@ int main(int argc, char * const argv[])
}
// Allocate a buffer big enough to contain all the data (OOB included) for one eraseblock
- filebuf_max = pagelen * ebsize_aligned / mtd.min_io_size;
+ filebuf_max = ebsize_aligned / mtd.min_io_size * pagelen;
filebuf = xmalloc(filebuf_max);
erase_buffer(filebuf, filebuf_max);
--
1.7.0.4
More information about the linux-mtd
mailing list