Loading Android.bp +3 −0 Original line number Diff line number Diff line Loading @@ -94,6 +94,8 @@ cc_defaults { shared_libs: [ "android.hardware.boot@1.0", "android.hardware.boot@1.1", "android.hardware.boot-V1-ndk", "libboot_control_client", "libbase", "libbootloader_message", "libcrypto", Loading Loading @@ -158,6 +160,7 @@ cc_binary { shared_libs: [ "android.hardware.health-V1-ndk", // from librecovery_utils "android.hardware.boot-V1-ndk", "librecovery_ui", ], Loading update_verifier/Android.bp +3 −1 Original line number Diff line number Diff line Loading @@ -79,6 +79,7 @@ cc_library_static { shared_libs: [ "android.hardware.boot@1.0", "libboot_control_client", "libbase", "libcutils", "libbinder", Loading Loading @@ -118,6 +119,7 @@ cc_binary { "libprotobuf-cpp-lite", "libbinder", "libutils", "libboot_control_client", ], init_rc: [ Loading update_verifier/update_verifier.cpp +13 −16 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ #include <future> #include <thread> #include <BootControlClient.h> #include <android-base/chrono_utils.h> #include <android-base/file.h> #include <android-base/logging.h> Loading @@ -59,7 +60,6 @@ #include <android-base/properties.h> #include <android-base/strings.h> #include <android-base/unique_fd.h> #include <android/hardware/boot/1.0/IBootControl.h> #include <android/os/IVold.h> #include <binder/BinderService.h> #include <binder/Status.h> Loading @@ -67,11 +67,6 @@ #include "care_map.pb.h" using android::sp; using android::hardware::boot::V1_0::IBootControl; using android::hardware::boot::V1_0::BoolResult; using android::hardware::boot::V1_0::CommandResult; // TODO(xunchang) remove the prefix and use a default path instead. constexpr const char* kDefaultCareMapPrefix = "/data/ota_package/care_map"; Loading @@ -92,7 +87,7 @@ UpdateVerifier::UpdateVerifier() // partition's integrity. std::map<std::string, std::string> UpdateVerifier::FindDmPartitions() { static constexpr auto DM_PATH_PREFIX = "/sys/block/"; dirent** namelist; dirent** namelist = nullptr; int n = scandir(DM_PATH_PREFIX, &namelist, dm_name_filter, alphasort); if (n == -1) { PLOG(ERROR) << "Failed to scan dir " << DM_PATH_PREFIX; Loading Loading @@ -329,18 +324,21 @@ int update_verifier(int argc, char** argv) { LOG(INFO) << "Started with arg " << i << ": " << argv[i]; } sp<IBootControl> module = IBootControl::getService(); const auto module = android::hal::BootControlClient::WaitForService(); if (module == nullptr) { LOG(ERROR) << "Error getting bootctrl module."; return reboot_device(); } uint32_t current_slot = module->getCurrentSlot(); BoolResult is_successful = module->isSlotMarkedSuccessful(current_slot); LOG(INFO) << "Booting slot " << current_slot << ": isSlotMarkedSuccessful=" << static_cast<int32_t>(is_successful); if (is_successful == BoolResult::FALSE) { uint32_t current_slot = module->GetCurrentSlot(); const auto is_successful = module->IsSlotMarkedSuccessful(current_slot); if (!is_successful.has_value()) { LOG(INFO) << "Booting slot " << current_slot << " failed"; } else { LOG(INFO) << "Booting slot " << current_slot << ": isSlotMarkedSuccessful=" << is_successful.value(); } if (is_successful.has_value() && !is_successful.value()) { // The current slot has not booted successfully. bool skip_verification = false; Loading Loading @@ -386,8 +384,7 @@ int update_verifier(int argc, char** argv) { } if (!supports_checkpoint) { CommandResult cr; module->markBootSuccessful([&cr](CommandResult result) { cr = result; }); const auto cr = module->MarkBootSuccessful(); if (!cr.success) { LOG(ERROR) << "Error marking booted successfully: " << cr.errMsg; return reboot_device(); Loading Loading
Android.bp +3 −0 Original line number Diff line number Diff line Loading @@ -94,6 +94,8 @@ cc_defaults { shared_libs: [ "android.hardware.boot@1.0", "android.hardware.boot@1.1", "android.hardware.boot-V1-ndk", "libboot_control_client", "libbase", "libbootloader_message", "libcrypto", Loading Loading @@ -158,6 +160,7 @@ cc_binary { shared_libs: [ "android.hardware.health-V1-ndk", // from librecovery_utils "android.hardware.boot-V1-ndk", "librecovery_ui", ], Loading
update_verifier/Android.bp +3 −1 Original line number Diff line number Diff line Loading @@ -79,6 +79,7 @@ cc_library_static { shared_libs: [ "android.hardware.boot@1.0", "libboot_control_client", "libbase", "libcutils", "libbinder", Loading Loading @@ -118,6 +119,7 @@ cc_binary { "libprotobuf-cpp-lite", "libbinder", "libutils", "libboot_control_client", ], init_rc: [ Loading
update_verifier/update_verifier.cpp +13 −16 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ #include <future> #include <thread> #include <BootControlClient.h> #include <android-base/chrono_utils.h> #include <android-base/file.h> #include <android-base/logging.h> Loading @@ -59,7 +60,6 @@ #include <android-base/properties.h> #include <android-base/strings.h> #include <android-base/unique_fd.h> #include <android/hardware/boot/1.0/IBootControl.h> #include <android/os/IVold.h> #include <binder/BinderService.h> #include <binder/Status.h> Loading @@ -67,11 +67,6 @@ #include "care_map.pb.h" using android::sp; using android::hardware::boot::V1_0::IBootControl; using android::hardware::boot::V1_0::BoolResult; using android::hardware::boot::V1_0::CommandResult; // TODO(xunchang) remove the prefix and use a default path instead. constexpr const char* kDefaultCareMapPrefix = "/data/ota_package/care_map"; Loading @@ -92,7 +87,7 @@ UpdateVerifier::UpdateVerifier() // partition's integrity. std::map<std::string, std::string> UpdateVerifier::FindDmPartitions() { static constexpr auto DM_PATH_PREFIX = "/sys/block/"; dirent** namelist; dirent** namelist = nullptr; int n = scandir(DM_PATH_PREFIX, &namelist, dm_name_filter, alphasort); if (n == -1) { PLOG(ERROR) << "Failed to scan dir " << DM_PATH_PREFIX; Loading Loading @@ -329,18 +324,21 @@ int update_verifier(int argc, char** argv) { LOG(INFO) << "Started with arg " << i << ": " << argv[i]; } sp<IBootControl> module = IBootControl::getService(); const auto module = android::hal::BootControlClient::WaitForService(); if (module == nullptr) { LOG(ERROR) << "Error getting bootctrl module."; return reboot_device(); } uint32_t current_slot = module->getCurrentSlot(); BoolResult is_successful = module->isSlotMarkedSuccessful(current_slot); LOG(INFO) << "Booting slot " << current_slot << ": isSlotMarkedSuccessful=" << static_cast<int32_t>(is_successful); if (is_successful == BoolResult::FALSE) { uint32_t current_slot = module->GetCurrentSlot(); const auto is_successful = module->IsSlotMarkedSuccessful(current_slot); if (!is_successful.has_value()) { LOG(INFO) << "Booting slot " << current_slot << " failed"; } else { LOG(INFO) << "Booting slot " << current_slot << ": isSlotMarkedSuccessful=" << is_successful.value(); } if (is_successful.has_value() && !is_successful.value()) { // The current slot has not booted successfully. bool skip_verification = false; Loading Loading @@ -386,8 +384,7 @@ int update_verifier(int argc, char** argv) { } if (!supports_checkpoint) { CommandResult cr; module->markBootSuccessful([&cr](CommandResult result) { cr = result; }); const auto cr = module->MarkBootSuccessful(); if (!cr.success) { LOG(ERROR) << "Error marking booted successfully: " << cr.errMsg; return reboot_device(); Loading