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
This commit is contained in:
Tao Bao
2017-04-10 16:55:57 -07:00
parent 464c6ba9f8
commit da320ac6ab
3 changed files with 17 additions and 5 deletions

View File

@@ -53,6 +53,7 @@ endif
LOCAL_MODULE := librecovery
LOCAL_STATIC_LIBRARIES := \
libminui \
libvintf_recovery \
libcrypto_utils \
libcrypto \
libbase
@@ -112,6 +113,9 @@ LOCAL_STATIC_LIBRARIES := \
libfs_mgr \
libcrypto_utils \
libcrypto \
libvintf_recovery \
libvintf \
libtinyxml2 \
libbase \
libcutils \
libutils \

View File

@@ -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"
@@ -544,10 +545,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
@@ -599,7 +605,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);

View File

@@ -133,6 +133,9 @@ LOCAL_STATIC_LIBRARIES := \
libdivsufsort64 \
libfs_mgr \
liblog \
libvintf_recovery \
libvintf \
libtinyxml2 \
libselinux \
libext4_utils \
libsparse \