Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b2a05176 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "libsparse: Limit block size to 64 MB" am: e10fb5f5

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

Change-Id: I01ffbd72a778721a73f7815934d56ab9ff4821c1
parents f24a7e1f e10fb5f5
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -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);