summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Zeuthen <zeuthen@google.com>2017-06-22 22:03:54 +0200
committerandroid-build-merger <android-build-merger@google.com>2017-06-22 22:03:54 +0200
commitd0f330026f9df1f382e23c7e1777d836921b7a79 (patch)
tree33f363f33091c7b6b6c24ae40450bbb0184f02af
parentrecovery: replace make_ext4 with e2fsprogs (diff)
parentMerge "update_verifier: Support AVB." am: e248e434ea am: 1f108dae49 (diff)
downloadandroid_bootable_recovery-d0f330026f9df1f382e23c7e1777d836921b7a79.tar
android_bootable_recovery-d0f330026f9df1f382e23c7e1777d836921b7a79.tar.gz
android_bootable_recovery-d0f330026f9df1f382e23c7e1777d836921b7a79.tar.bz2
android_bootable_recovery-d0f330026f9df1f382e23c7e1777d836921b7a79.tar.lz
android_bootable_recovery-d0f330026f9df1f382e23c7e1777d836921b7a79.tar.xz
android_bootable_recovery-d0f330026f9df1f382e23c7e1777d836921b7a79.tar.zst
android_bootable_recovery-d0f330026f9df1f382e23c7e1777d836921b7a79.zip
-rw-r--r--tests/Android.mk4
-rw-r--r--tests/component/update_verifier_test.cpp2
-rw-r--r--update_verifier/Android.mk4
-rw-r--r--update_verifier/update_verifier.cpp21
4 files changed, 24 insertions, 7 deletions
diff --git a/tests/Android.mk b/tests/Android.mk
index 262f4ffdd..346873dbe 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -92,6 +92,10 @@ ifeq ($(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SUPPORTS_VERITY),true)
LOCAL_CFLAGS += -DPRODUCT_SUPPORTS_VERITY=1
endif
+ifeq ($(BOARD_AVB_ENABLE),true)
+LOCAL_CFLAGS += -DBOARD_AVB_ENABLE=1
+endif
+
LOCAL_MODULE := recovery_component_test
LOCAL_COMPATIBILITY_SUITE := device-tests
LOCAL_C_INCLUDES := bootable/recovery
diff --git a/tests/component/update_verifier_test.cpp b/tests/component/update_verifier_test.cpp
index 73b4478aa..5fc7ef63f 100644
--- a/tests/component/update_verifier_test.cpp
+++ b/tests/component/update_verifier_test.cpp
@@ -24,7 +24,7 @@
class UpdateVerifierTest : public ::testing::Test {
protected:
void SetUp() override {
-#ifdef PRODUCT_SUPPORTS_VERITY
+#if defined(PRODUCT_SUPPORTS_VERITY) || defined(BOARD_AVB_ENABLE)
verity_supported = true;
#else
verity_supported = false;
diff --git a/update_verifier/Android.mk b/update_verifier/Android.mk
index 37d9bfed3..33c5fe9e7 100644
--- a/update_verifier/Android.mk
+++ b/update_verifier/Android.mk
@@ -39,6 +39,10 @@ ifeq ($(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SUPPORTS_VERITY),true)
LOCAL_CFLAGS += -DPRODUCT_SUPPORTS_VERITY=1
endif
+ifeq ($(BOARD_AVB_ENABLE),true)
+LOCAL_CFLAGS += -DBOARD_AVB_ENABLE=1
+endif
+
include $(BUILD_STATIC_LIBRARY)
# update_verifier (executable)
diff --git a/update_verifier/update_verifier.cpp b/update_verifier/update_verifier.cpp
index fdbcfde56..d3a5185b8 100644
--- a/update_verifier/update_verifier.cpp
+++ b/update_verifier/update_verifier.cpp
@@ -99,12 +99,21 @@ static bool read_blocks(const std::string& partition, const std::string& range_s
std::string content;
if (!android::base::ReadFileToString(path, &content)) {
PLOG(WARNING) << "Failed to read " << path;
- } else if (android::base::Trim(content) == partition) {
- dm_block_device = DEV_PATH + std::string(namelist[n]->d_name);
- while (n--) {
- free(namelist[n]);
+ } else {
+ std::string dm_block_name = android::base::Trim(content);
+#ifdef BOARD_AVB_ENABLE
+ // AVB is using 'vroot' for the root block device but we're expecting 'system'.
+ if (dm_block_name == "vroot") {
+ dm_block_name = "system";
+ }
+#endif
+ if (dm_block_name == partition) {
+ dm_block_device = DEV_PATH + std::string(namelist[n]->d_name);
+ while (n--) {
+ free(namelist[n]);
+ }
+ break;
}
- break;
}
free(namelist[n]);
}
@@ -229,7 +238,7 @@ int update_verifier(int argc, char** argv) {
if (is_successful == BoolResult::FALSE) {
// The current slot has not booted successfully.
-#ifdef PRODUCT_SUPPORTS_VERITY
+#if defined(PRODUCT_SUPPORTS_VERITY) || defined(BOARD_AVB_ENABLE)
std::string verity_mode = android::base::GetProperty("ro.boot.veritymode", "");
if (verity_mode.empty()) {
LOG(ERROR) << "Failed to get dm-verity mode.";