From 08090670625c4ccf86dbc9157dad4799f3669fb7 Mon Sep 17 00:00:00 2001 From: Frank Li Date: Wed, 17 Oct 2018 13:58:23 -0500 Subject: [PATCH] MLK-19969 fastboot: write to wrong position when size bigger than 4GB chunk_data_sz = sparse_header->blk_sz * chunk_header->chunk_sz; All is uint32. chunk_data_sz may be bigger than 4G. Change chunk_data_sz to 64bit. force chunk_header->chunk_sz and sparse_header->blk_sz to 64bit. Signed-off-by: Frank Li Acked-by: Ye Li --- common/image-sparse.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/image-sparse.c b/common/image-sparse.c index ddf5772cf8..86ff5a04bb 100644 --- a/common/image-sparse.c +++ b/common/image-sparse.c @@ -59,7 +59,7 @@ void write_sparse_image( uint32_t bytes_written = 0; unsigned int chunk; unsigned int offset; - unsigned int chunk_data_sz; + uint64_t chunk_data_sz; uint32_t *fill_buf = NULL; uint32_t fill_val; sparse_header_t *sparse_header; @@ -130,7 +130,7 @@ void write_sparse_image( sizeof(chunk_header_t)); } - chunk_data_sz = sparse_header->blk_sz * chunk_header->chunk_sz; + chunk_data_sz = (uint64_t)sparse_header->blk_sz * (uint64_t)chunk_header->chunk_sz; blkcnt = chunk_data_sz / info->blksz; switch (chunk_header->chunk_type) { case CHUNK_TYPE_RAW: