Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a190551d authored by Bowgo Tsai's avatar Bowgo Tsai Committed by Android (Google) Code Review
Browse files

Merge "Set libavb version into system property for Treble OTA" into oc-dev

parents 79af3c6d 45180122
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -493,6 +493,10 @@ FsManagerAvbUniquePtr FsManagerAvbHandle::Open(const std::string& device_file_by
        return nullptr;
    }

    // Sets the MAJOR.MINOR for init to set it into "ro.boot.avb_version".
    avb_handle->avb_version_ =
        android::base::StringPrintf("%d.%d", AVB_VERSION_MAJOR, AVB_VERSION_MINOR);

    // Verifies vbmeta images against the digest passed from bootloader.
    if (!avb_verifier->VerifyVbmetaImages(*avb_handle->avb_slot_data_)) {
        LERROR << "VerifyVbmetaImages failed";
+3 −1
Original line number Diff line number Diff line
@@ -72,7 +72,8 @@ class FsManagerAvbHandle {
    // Otherwise, returns false.
    bool SetUpAvb(fstab_rec* fstab_entry, bool wait_for_verity_dev);

    bool AvbHashtreeDisabled() { return status_ == kFsManagerAvbHandleHashtreeDisabled; }
    bool hashtree_disabled() const { return status_ == kFsManagerAvbHandleHashtreeDisabled; }
    const std::string& avb_version() const { return avb_version_; }

    FsManagerAvbHandle(const FsManagerAvbHandle&) = delete;             // no copy
    FsManagerAvbHandle& operator=(const FsManagerAvbHandle&) = delete;  // no assignment
@@ -92,6 +93,7 @@ class FsManagerAvbHandle {
  private:
    AvbSlotVerifyData* avb_slot_data_;
    FsManagerAvbHandleStatus status_;
    std::string avb_version_;
};

#endif /* __CORE_FS_MGR_AVB_H */
+5 −2
Original line number Diff line number Diff line
@@ -1040,10 +1040,11 @@ static bool vboot_2_0_mount_partitions(const std::vector<fstab_rec*>& fstab_recs
        return false;
    }

    setenv("INIT_AVB_VERSION", avb_handle->avb_version().c_str(), 1);
    for (auto rec : fstab_recs) {
        bool need_create_dm_device = false;
        if (fs_mgr_is_avb(rec)) {
            if (avb_handle->AvbHashtreeDisabled()) {
            if (avb_handle->hashtree_disabled()) {
                LOG(INFO) << "avb hashtree disabled for '" << rec->mount_point << "'";
            } else if (avb_handle->SetUpAvb(rec, false /* wait_for_verity_dev */)) {
                need_create_dm_device = true;
@@ -1390,12 +1391,14 @@ int main(int argc, char** argv) {
    property_set("ro.boottime.init.selinux", getenv("INIT_SELINUX_TOOK"));

    // Set libavb version for Framework-only OTA match in Treble build.
    property_set("ro.boot.init.avb_version", std::to_string(AVB_MAJOR_VERSION).c_str());
    const char* avb_version = getenv("INIT_AVB_VERSION");
    if (avb_version) property_set("ro.boot.avb_version", avb_version);

    // Clean up our environment.
    unsetenv("INIT_SECOND_STAGE");
    unsetenv("INIT_STARTED_AT");
    unsetenv("INIT_SELINUX_TOOK");
    unsetenv("INIT_AVB_VERSION");

    // Now set up SELinux for second stage.
    selinux_initialize(false);