libsparse: Limit block size to 64 MB am: 39bdf397fa

Original change: https://googleplex-android-review.googlesource.com/c/platform/system/core/+/11716812

Change-Id: I7c76203fe07db36d7dbfe252501a822a6043014c
This commit is contained in:
Woody Lin 2020-06-04 23:04:17 +00:00 committed by Automerger Merge Worker
commit cf0c5e09ce

View file

@ -136,11 +136,23 @@ static int write_all_blocks(struct sparse_file* s, struct output_file* out) {
return 0;
}
/*
* This is a workaround for 32-bit Windows: Limit the block size to 64 MB before
* fastboot executable binary for windows 64-bit is released (b/156057250).
*/
#define MAX_BACKED_BLOCK_SIZE ((unsigned int) (64UL << 20))
int sparse_file_write(struct sparse_file* s, int fd, bool gz, bool sparse, bool crc) {
struct backed_block* bb;
int ret;
int chunks;
struct output_file* out;
for (bb = backed_block_iter_new(s->backed_block_list); bb; bb = backed_block_iter_next(bb)) {
ret = backed_block_split(s->backed_block_list, bb, MAX_BACKED_BLOCK_SIZE);
if (ret) return ret;
}
chunks = sparse_count_chunks(s);
out = output_file_open_fd(fd, s->block_size, s->len, gz, sparse, chunks, crc);