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

Commit 77998045 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Use genfs labels version library" into main am: 1c1bdd91

parents f8e0940d 1c1bdd91
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -176,6 +176,7 @@ libinit_cc_defaults {
        "libxml2",
        "lib_apex_manifest_proto_lite",
        "update_metadata-protos",
        "libgenfslabelsversion.ffi",
    ],
    shared_libs: [
        "libbase",
+5 −17
Original line number Diff line number Diff line
@@ -69,6 +69,7 @@
#include <android/avf_cc_flags.h>
#include <fs_avb/fs_avb.h>
#include <fs_mgr.h>
#include <genfslabelsversion.h>
#include <libgsi/libgsi.h>
#include <libsnapshot/snapshot.h>
#include <selinux/android.h>
@@ -190,22 +191,6 @@ bool GetVendorMappingVersion(std::string* plat_vers) {
    return true;
}

int GetVendorGenfsVersion() {
    std::string line;
    if (!ReadFirstLine("/vendor/etc/selinux/genfs_labels_version.txt", &line)) {
        PLOG(ERROR) << "Failed to read /vendor/etc/selinux/genfs_labels_version.txt; assuming it's "
                       "202404";
        return 202404;
    }
    int version;
    if (!ParseInt(line, &version)) {
        PLOG(ERROR) << "Failed to parse the genfs labels version " << line
                    << "; assuming it's 202404";
        return 202404;
    }
    return version;
}

constexpr const char plat_policy_cil_file[] = "/system/etc/selinux/plat_sepolicy.cil";

bool IsSplitPolicyDevice() {
@@ -342,11 +327,14 @@ bool OpenSplitPolicy(PolicyFile* policy_file) {

    std::vector<std::string> genfs_cil_files;

    int vendor_genfs_version = GetVendorGenfsVersion();
    int vendor_genfs_version = get_genfs_labels_version();
    std::string genfs_cil_file =
            std::format("/system/etc/selinux/plat_sepolicy_genfs_{}.cil", vendor_genfs_version);
    if (access(genfs_cil_file.c_str(), F_OK) != 0) {
        LOG(INFO) << "Missing " << genfs_cil_file << "; skipping";
        genfs_cil_file.clear();
    } else {
        LOG(INFO) << "Using " << genfs_cil_file << " for genfs labels";
    }

    // clang-format off