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

Commit 6e69b2ea authored by Bowgo Tsai's avatar Bowgo Tsai Committed by android-build-merger
Browse files

Merge "Set libavb version into system property for Treble OTA" am: e8311491 am: 7b088693

am: 6f3ec3d7

Change-Id: I2c97b605e75c479e485ac36e1e90c039467df04e
parents 76100663 6f3ec3d7
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -493,6 +493,10 @@ FsManagerAvbUniquePtr FsManagerAvbHandle::Open(const std::string& device_file_by
        return nullptr;
        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.
    // Verifies vbmeta images against the digest passed from bootloader.
    if (!avb_verifier->VerifyVbmetaImages(*avb_handle->avb_slot_data_)) {
    if (!avb_verifier->VerifyVbmetaImages(*avb_handle->avb_slot_data_)) {
        LERROR << "VerifyVbmetaImages failed";
        LERROR << "VerifyVbmetaImages failed";
+3 −1
Original line number Original line Diff line number Diff line
@@ -72,7 +72,8 @@ class FsManagerAvbHandle {
    // Otherwise, returns false.
    // Otherwise, returns false.
    bool SetUpAvb(fstab_rec* fstab_entry, bool wait_for_verity_dev);
    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(const FsManagerAvbHandle&) = delete;             // no copy
    FsManagerAvbHandle& operator=(const FsManagerAvbHandle&) = delete;  // no assignment
    FsManagerAvbHandle& operator=(const FsManagerAvbHandle&) = delete;  // no assignment
@@ -92,6 +93,7 @@ class FsManagerAvbHandle {
  private:
  private:
    AvbSlotVerifyData* avb_slot_data_;
    AvbSlotVerifyData* avb_slot_data_;
    FsManagerAvbHandleStatus status_;
    FsManagerAvbHandleStatus status_;
    std::string avb_version_;
};
};


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


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


    // Set libavb version for Framework-only OTA match in Treble build.
    // 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.
    // Clean up our environment.
    unsetenv("INIT_SECOND_STAGE");
    unsetenv("INIT_SECOND_STAGE");
    unsetenv("INIT_STARTED_AT");
    unsetenv("INIT_STARTED_AT");
    unsetenv("INIT_SELINUX_TOOK");
    unsetenv("INIT_SELINUX_TOOK");
    unsetenv("INIT_AVB_VERSION");


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