summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKelvin Zhang <zhangkelvin@google.com>2023-03-15 02:36:47 +0100
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-03-15 02:36:47 +0100
commitb93ca40c495e21c2ec88e4dd445fca058aa88375 (patch)
treece829f2ae4553f1a2831a6aa21092915799ab95c
parentMerge "Stop mentioning about ALLOW_ADBD_NO_AUTH" am: 19e9af0a99 am: 6f24f52f79 am: 89ece764fe (diff)
parentMerge "Require serialno field for brick OTA package on release-key devices" am: 00bfe128f9 am: 421625f458 (diff)
downloadandroid_bootable_recovery-b93ca40c495e21c2ec88e4dd445fca058aa88375.tar
android_bootable_recovery-b93ca40c495e21c2ec88e4dd445fca058aa88375.tar.gz
android_bootable_recovery-b93ca40c495e21c2ec88e4dd445fca058aa88375.tar.bz2
android_bootable_recovery-b93ca40c495e21c2ec88e4dd445fca058aa88375.tar.lz
android_bootable_recovery-b93ca40c495e21c2ec88e4dd445fca058aa88375.tar.xz
android_bootable_recovery-b93ca40c495e21c2ec88e4dd445fca058aa88375.tar.zst
android_bootable_recovery-b93ca40c495e21c2ec88e4dd445fca058aa88375.zip
-rw-r--r--install/install.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/install/install.cpp b/install/install.cpp
index 044856b6b..30ba94c26 100644
--- a/install/install.cpp
+++ b/install/install.cpp
@@ -70,6 +70,8 @@ static constexpr int VERIFICATION_PROGRESS_TIME = 60;
static constexpr float VERIFICATION_PROGRESS_FRACTION = 0.25;
// The charater used to separate dynamic fingerprints. e.x. sargo|aosp-sargo
static const char* FINGERPRING_SEPARATOR = "|";
+static constexpr auto&& RELEASE_KEYS_TAG = "release-keys";
+
static std::condition_variable finish_log_temperature;
static bool isInStringList(const std::string& target_token, const std::string& str_list,
const std::string& deliminator);
@@ -213,6 +215,7 @@ bool CheckPackageMetadata(const std::map<std::string, std::string>& metadata, Ot
// We allow the package to not have any serialno; and we also allow it to carry multiple serial
// numbers split by "|"; e.g. serialno=serialno1|serialno2|serialno3 ... We will fail the
// verification if the device's serialno doesn't match any of these carried numbers.
+
auto pkg_serial_no = get_value(metadata, "serialno");
if (!pkg_serial_no.empty()) {
auto device_serial_no = android::base::GetProperty("ro.serialno", "");
@@ -226,6 +229,21 @@ bool CheckPackageMetadata(const std::map<std::string, std::string>& metadata, Ot
LOG(ERROR) << "Package is for serial " << pkg_serial_no;
return false;
}
+ } else if (ota_type == OtaType::BRICK) {
+ const auto device_build_tag = android::base::GetProperty("ro.build.tags", "");
+ if (device_build_tag.empty()) {
+ LOG(ERROR) << "Unable to determine device build tags, serial number is missing from package. "
+ "Rejecting the brick OTA package.";
+ return false;
+ }
+ if (device_build_tag == RELEASE_KEYS_TAG) {
+ LOG(ERROR) << "Device is release key build, serial number is missing from package. "
+ "Rejecting the brick OTA package.";
+ return false;
+ }
+ LOG(INFO)
+ << "Serial number is missing from brick OTA package, permitting anyway because device is "
+ << device_build_tag;
}
if (ota_type == OtaType::AB) {