fix DynamicPartitionControlAndroid::LoadMetadataBuilder
If target_slot is kInvalidSlot, call MetadataBuilder::New instead
of NewForUpdate.
Test: apply OTA on retrofit DAP devices
Fixes: 138914539
Change-Id: I5642c051ad4d80b814617ea91fcd2aa060f9a498
diff --git a/dynamic_partition_control_android.cc b/dynamic_partition_control_android.cc
index 1a1e021..d9d3be5 100644
--- a/dynamic_partition_control_android.cc
+++ b/dynamic_partition_control_android.cc
@@ -204,8 +204,14 @@
const std::string& super_device,
uint32_t source_slot,
uint32_t target_slot) {
- auto builder = MetadataBuilder::NewForUpdate(
- PartitionOpener(), super_device, source_slot, target_slot);
+ std::unique_ptr<MetadataBuilder> builder;
+ if (target_slot == BootControlInterface::kInvalidSlot) {
+ builder =
+ MetadataBuilder::New(PartitionOpener(), super_device, source_slot);
+ } else {
+ builder = MetadataBuilder::NewForUpdate(
+ PartitionOpener(), super_device, source_slot, target_slot);
+ }
if (builder == nullptr) {
LOG(WARNING) << "No metadata slot "