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

Commit 766e8782 authored by Tom Cherry's avatar Tom Cherry Committed by Gerrit Code Review
Browse files

Merge "Add default executable permission in odm/bin"

parents 3e182b61 a8eb0072
Loading
Loading
Loading
Loading
+15 −13
Original line number Diff line number Diff line
@@ -214,6 +214,7 @@ static const struct fs_path_config android_files[] = {
    { 00755, AID_ROOT,      AID_ROOT,      0, "bin/*" },
    { 00640, AID_ROOT,      AID_SHELL,     0, "fstab.*" },
    { 00750, AID_ROOT,      AID_SHELL,     0, "init*" },
    { 00755, AID_ROOT,      AID_SHELL,     0, "odm/bin/*" },
    { 00755, AID_ROOT,      AID_SHELL,     0, "product/bin/*" },
    { 00755, AID_ROOT,      AID_SHELL,     0, "system/bin/*" },
    { 00755, AID_ROOT,      AID_SHELL,     0, "system/xbin/*" },
@@ -292,20 +293,21 @@ static bool fs_config_cmp(bool dir, const char* prefix, size_t len, const char*
    const int fnm_flags = FNM_NOESCAPE;
    if (fnmatch(pattern.c_str(), input.c_str(), fnm_flags) == 0) return true;

    static constexpr const char* kSystem = "system/";
    if (StartsWith(input, kSystem)) {
        input.erase(0, strlen(kSystem));
    } else if (input.size() <= strlen(kSystem)) {
        return false;
    } else if (StartsWith(pattern, kSystem)) {
        pattern.erase(0, strlen(kSystem));
    } else {
        return false;
    // Check match between logical partition's files and patterns.
    static constexpr const char* kLogicalPartitions[] = {"system/product/",
                                                         "system/product_services/",
                                                         "system/vendor/",
                                                         "vendor/odm/"};
    for (auto& logical_partition : kLogicalPartitions) {
        if (StartsWith(input, logical_partition)) {
            std::string input_in_partition = input.substr(input.find('/') + 1);
            if (!is_partition(input_in_partition)) continue;
            if (fnmatch(pattern.c_str(), input_in_partition.c_str(), fnm_flags) == 0) {
                return true;
            }

    if (!is_partition(pattern)) return false;
    if (!is_partition(input)) return false;
    return fnmatch(pattern.c_str(), input.c_str(), fnm_flags) == 0;
        }
    }
    return false;
}
#ifndef __ANDROID_VNDK__
auto __for_testing_only__fs_config_cmp = fs_config_cmp;