diff options
author | Steffen Trumtrar <s.trumtrar@pengutronix.de> | 2021-01-11 11:32:05 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2021-01-13 10:03:37 +0100 |
commit | 46ea14fc83360b885f9ba0954892694a1102e20e (patch) | |
tree | 0caa93c20c567b10493a1a771824f4a593419e36 | |
parent | 131bac34d2ce9997fe30eeb3bbd361248befc7d1 (diff) | |
download | barebox-46ea14fc83360b885f9ba0954892694a1102e20e.tar.gz barebox-46ea14fc83360b885f9ba0954892694a1102e20e.tar.xz |
image-sparse: change chunk_data_sz to u64
chunk_data_sz is set to the result of a __le32 * __le32 multiplication:
chunk_data_sz = si->sparse.blk_sz * si->chunk.chunk_sz;
This will overflow.
Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | lib/image-sparse.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/image-sparse.c b/lib/image-sparse.c index 8e7a52fd71..c375c78d63 100644 --- a/lib/image-sparse.c +++ b/lib/image-sparse.c @@ -62,7 +62,8 @@ struct sparse_image_ctx { static int sparse_seek(struct sparse_image_ctx *si) { - unsigned int chunk_data_sz, payload; + uint64_t chunk_data_sz; + unsigned int payload; loff_t offs; int ret; @@ -94,7 +95,7 @@ again: return -errno; } - chunk_data_sz = si->sparse.blk_sz * si->chunk.chunk_sz; + chunk_data_sz = (uint64_t) si->sparse.blk_sz * si->chunk.chunk_sz; payload = si->chunk.total_sz - si->sparse.chunk_hdr_sz; si->processed_chunks++; |