diff options
author | Tianjie Xu <xunchang@google.com> | 2017-08-23 00:40:47 +0200 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2017-08-23 00:40:47 +0200 |
commit | 3810046a553d8d0405dedd1c317d65e215557a8c (patch) | |
tree | 080fbb57e3b7cad66237931dbfe52eb00c76724f /install.cpp | |
parent | Merge changes I5d7a6baa,Id0fb2d4e (diff) | |
parent | Allow comparison against multi serial nums for A/B package (diff) | |
download | android_bootable_recovery-3810046a553d8d0405dedd1c317d65e215557a8c.tar android_bootable_recovery-3810046a553d8d0405dedd1c317d65e215557a8c.tar.gz android_bootable_recovery-3810046a553d8d0405dedd1c317d65e215557a8c.tar.bz2 android_bootable_recovery-3810046a553d8d0405dedd1c317d65e215557a8c.tar.lz android_bootable_recovery-3810046a553d8d0405dedd1c317d65e215557a8c.tar.xz android_bootable_recovery-3810046a553d8d0405dedd1c317d65e215557a8c.tar.zst android_bootable_recovery-3810046a553d8d0405dedd1c317d65e215557a8c.zip |
Diffstat (limited to '')
-rw-r--r-- | install.cpp | 20 |
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") { |