Handle zero snapshot size appropriately.

This won't happen in practice because device size is never
zero. Hypothetically, if it is, PartitionCowCreator still
suggests that a CoW size of 8192 bytes needs to be created. In
reality, it is not necessary.

Test: libsnapshot_fuzzer
Bug: 155484992
Change-Id: I6c69f54820522d50c699384eec90c474ca3a9402
This commit is contained in:
Yifan Hong 2020-05-01 11:41:56 -07:00
parent b827d1db0c
commit 83c690c7a6

View file

@ -181,6 +181,13 @@ std::optional<PartitionCowCreator::Return> PartitionCowCreator::Run() {
ret.snapshot_status.set_device_size(target_partition->size());
ret.snapshot_status.set_snapshot_size(target_partition->size());
if (ret.snapshot_status.snapshot_size() == 0) {
LOG(INFO) << "Not creating snapshot for partition " << ret.snapshot_status.name();
ret.snapshot_status.set_cow_partition_size(0);
ret.snapshot_status.set_cow_file_size(0);
return ret;
}
// Being the COW partition virtual, its size doesn't affect the storage
// memory that will be occupied by the target.
// The actual storage space is affected by the COW file, whose size depends