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 <Frank.Li@nxp.com>
Acked-by: Ye Li <Ye.Li@nxp.com>
This commit is contained in:
Frank Li 2018-10-17 13:58:23 -05:00
parent e9b7faa159
commit 0809067062
1 changed files with 2 additions and 2 deletions

View File

@ -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: