diff options
author | Tao Bao <tbao@google.com> | 2017-04-10 16:55:57 -0700 |
---|---|---|
committer | Tao Bao <tbao@google.com> | 2017-04-19 15:17:16 -0700 |
commit | 919d2c9a5341d123fa1c97ffad3549c20e1dd021 (patch) | |
tree | 6bdf1c0ad8bef71ef111e5c8932f2b2e578ade37 /install.cpp | |
parent | 08146728c1a9b5d686f79f20fa6a9e2201c760be (diff) | |
download | android_bootable_recovery-919d2c9a5341d123fa1c97ffad3549c20e1dd021.tar.gz android_bootable_recovery-919d2c9a5341d123fa1c97ffad3549c20e1dd021.tar.bz2 android_bootable_recovery-919d2c9a5341d123fa1c97ffad3549c20e1dd021.zip |
Call libvintf to verify package compatibility.
The libvintf API has landed. Hook up to do the actual verification.
Bug: 36597505
Test: recovery_component_test
Test: m recoveryimage; adb sideload on angler and sailfish, with
packages that contain dummy compatibility entries.
Test: m recoveryimage; adb sideload on angler and sailfish, with
packages that don't contain any compatibility entries.
Change-Id: Idbd6f5aaef605ca51b20e667505d686de5ac781f
(cherry picked from commit da320ac6ab53395ddff3cc08b88a61f977ed939a)
Diffstat (limited to 'install.cpp')
-rw-r--r-- | install.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/install.cpp b/install.cpp index 95794ce0..2a647b1a 100644 --- a/install.cpp +++ b/install.cpp @@ -44,6 +44,7 @@ #include <android-base/properties.h> #include <android-base/stringprintf.h> #include <android-base/strings.h> +#include <vintf/VintfObjectRecovery.h> #include <ziparchive/zip_archive.h> #include "common.h" @@ -539,10 +540,15 @@ bool verify_package_compatibility(ZipArchiveHandle package_zip) { } CloseArchive(zip_handle); - // TODO(b/36814503): Enable the actual verification when VintfObject::CheckCompatibility() lands. - // VintfObject::CheckCompatibility returns zero on success. - // return (android::vintf::VintfObject::CheckCompatibility(compatibility_info, true) == 0); - return true; + // VintfObjectRecovery::CheckCompatibility returns zero on success. + std::string err; + int result = android::vintf::VintfObjectRecovery::CheckCompatibility(compatibility_info, &err); + if (result == 0) { + return true; + } + + LOG(ERROR) << "Failed to verify package compatibility (result " << result << "): " << err; + return false; } static int @@ -594,7 +600,6 @@ really_install_package(const char *path, bool* wipe_cache, bool needs_mount, // Additionally verify the compatibility of the package. if (!verify_package_compatibility(zip)) { - LOG(ERROR) << "Failed to verify package compatibility"; log_buffer.push_back(android::base::StringPrintf("error: %d", kPackageCompatibilityFailure)); sysReleaseMap(&map); CloseArchive(zip); |