aboutsummaryrefslogtreecommitdiff
path: root/updater/dynamic_partitions.cpp
diff options
context:
space:
mode:
authorJulian Veit <Claymore1298@gmail.com>2024-07-08 07:46:54 +0200
committerJulian Veit <Claymore1298@gmail.com>2024-07-08 07:46:54 +0200
commit0aac54a0e9fd9d80d43d7154370810ac86e92f1b (patch)
treed63c54a4973f5958ab5d6def478563d27a72b6eb /updater/dynamic_partitions.cpp
parentaf9a42f1d13ffeca2eabf368580ad6790e2763ba (diff)
parent8bbe7bae399b428cfaa021a511d749c78e5a8e73 (diff)
Merge https://github.com/LineageOS/android_bootable_recovery into HEADu14.0
Change-Id: I05e44ba7ba265c80b0f6bf48f2c084e2598c69e4
Diffstat (limited to 'updater/dynamic_partitions.cpp')
-rw-r--r--updater/dynamic_partitions.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/updater/dynamic_partitions.cpp b/updater/dynamic_partitions.cpp
index a340116f..b94bd0e5 100644
--- a/updater/dynamic_partitions.cpp
+++ b/updater/dynamic_partitions.cpp
@@ -88,8 +88,10 @@ static constexpr char kMetadataUpdatedMarker[] = "/dynamic_partition_metadata.UP
Value* UpdateDynamicPartitionsFn(const char* name, State* state,
const std::vector<std::unique_ptr<Expr>>& argv) {
- if (argv.size() != 1) {
- ErrorAbort(state, kArgsParsingFailure, "%s expects 1 arguments, got %zu", name, argv.size());
+ const std::string_view empty_string_view{};
+ if (argv.size() != 1 && argv.size() != 2) {
+ ErrorAbort(state, kArgsParsingFailure, "%s expects 1 or 2 arguments, got %zu", name,
+ argv.size());
return StringValue("");
}
std::vector<std::unique_ptr<Value>> args;
@@ -102,6 +104,14 @@ Value* UpdateDynamicPartitionsFn(const char* name, State* state,
return StringValue("");
}
+ const std::unique_ptr<Value>& super_empty_value = args[1];
+ if (argv.size() > 1) {
+ if (super_empty_value->type != Value::Type::BLOB) {
+ ErrorAbort(state, kArgsParsingFailure, "super_empty argument to %s must be blob", name);
+ return StringValue("");
+ }
+ }
+
std::string updated_marker = Paths::Get().stash_directory_base() + kMetadataUpdatedMarker;
if (state->is_retry) {
struct stat sb;
@@ -121,7 +131,8 @@ Value* UpdateDynamicPartitionsFn(const char* name, State* state,
}
auto updater_runtime = state->updater->GetRuntime();
- if (!updater_runtime->UpdateDynamicPartitions(op_list_value->data)) {
+ if (!updater_runtime->UpdateDynamicPartitions(
+ op_list_value->data, argv.size() > 1 ? super_empty_value->data : empty_string_view)) {
return StringValue("");
}