summaryrefslogtreecommitdiffstats
path: root/install.cpp
diff options
context:
space:
mode:
authorTianjie Xu <xunchang@google.com>2017-08-18 01:42:57 +0200
committerTianjie Xu <xunchang@google.com>2017-08-22 21:05:52 +0200
commit69b9649e9bfafc2ddb5aa4dd609895b1fc097364 (patch)
treedd4d2446f55e23c77ff671317d66784986b88bda /install.cpp
parentMerge "Move Image/ImageChunk/PatchChunk declaration into header files" (diff)
downloadandroid_bootable_recovery-69b9649e9bfafc2ddb5aa4dd609895b1fc097364.tar
android_bootable_recovery-69b9649e9bfafc2ddb5aa4dd609895b1fc097364.tar.gz
android_bootable_recovery-69b9649e9bfafc2ddb5aa4dd609895b1fc097364.tar.bz2
android_bootable_recovery-69b9649e9bfafc2ddb5aa4dd609895b1fc097364.tar.lz
android_bootable_recovery-69b9649e9bfafc2ddb5aa4dd609895b1fc097364.tar.xz
android_bootable_recovery-69b9649e9bfafc2ddb5aa4dd609895b1fc097364.tar.zst
android_bootable_recovery-69b9649e9bfafc2ddb5aa4dd609895b1fc097364.zip
Diffstat (limited to 'install.cpp')
-rw-r--r--install.cpp20
1 files changed, 15 insertions, 5 deletions
diff --git a/install.cpp b/install.cpp
index 7fbf5c01f..1220c6ab7 100644
--- a/install.cpp
+++ b/install.cpp
@@ -148,13 +148,23 @@ static int check_newer_ab_build(ZipArchiveHandle zip) {
return INSTALL_ERROR;
}
- // We allow the package to not have any serialno, but if it has a non-empty
- // value it should match.
+ // 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.
value = android::base::GetProperty("ro.serialno", "");
const std::string& pkg_serial_no = metadata["serialno"];
- if (!pkg_serial_no.empty() && pkg_serial_no != value) {
- LOG(ERROR) << "Package is for serial " << pkg_serial_no;
- return INSTALL_ERROR;
+ if (!pkg_serial_no.empty()) {
+ bool match = false;
+ for (const std::string& number : android::base::Split(pkg_serial_no, "|")) {
+ if (value == android::base::Trim(number)) {
+ match = true;
+ break;
+ }
+ }
+ if (!match) {
+ LOG(ERROR) << "Package is for serial " << pkg_serial_no;
+ return INSTALL_ERROR;
+ }
}
if (metadata["ota-type"] != "AB") {