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

Commit 1640cd87 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 7266202 from bef1e8b4 to sc-v2-release

Change-Id: Ifaecdc0c52a79739520f2d707206eb21f95e0320
parents fec3d19a bef1e8b4
Loading
Loading
Loading
Loading
+22 −11
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
#include <ctype.h>
#include <dirent.h>
#include <errno.h>
#include <fnmatch.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -779,21 +780,31 @@ bool SkipMountingPartitions(Fstab* fstab, bool verbose) {
        return true;
    }

    for (const auto& skip_mount_point : Split(skip_config, "\n")) {
        if (skip_mount_point.empty()) {
    std::vector<std::string> skip_mount_patterns;
    for (const auto& line : Split(skip_config, "\n")) {
        if (line.empty() || StartsWith(line, "#")) {
            continue;
        }
        auto it = std::remove_if(fstab->begin(), fstab->end(),
                                 [&skip_mount_point](const auto& entry) {
                                     return entry.mount_point == skip_mount_point;
                                 });
        if (it == fstab->end()) continue;
        fstab->erase(it, fstab->end());
        skip_mount_patterns.push_back(line);
    }

    // Returns false if mount_point matches any of the skip mount patterns, so that the FstabEntry
    // would be partitioned to the second group.
    auto glob_pattern_mismatch = [&skip_mount_patterns](const FstabEntry& entry) -> bool {
        for (const auto& pattern : skip_mount_patterns) {
            if (!fnmatch(pattern.c_str(), entry.mount_point.c_str(), 0 /* flags */)) {
                return false;
            }
        }
        return true;
    };
    auto remove_from = std::stable_partition(fstab->begin(), fstab->end(), glob_pattern_mismatch);
    if (verbose) {
            LINFO << "Skip mounting partition: " << skip_mount_point;
        for (auto it = remove_from; it != fstab->end(); ++it) {
            LINFO << "Skip mounting mountpoint: " << it->mount_point;
        }
    }

    fstab->erase(remove_from, fstab->end());
    return true;
}
#endif
+2 −2
Original line number Diff line number Diff line
@@ -106,10 +106,10 @@ Result<void> ParseExternalFirmwareHandlerLine(
    }

    if (std::find_if(external_firmware_handlers->begin(), external_firmware_handlers->end(),
                     [&args](const auto& other) { return other.devpath == args[2]; }) !=
                     [&args](const auto& other) { return other.devpath == args[1]; }) !=
        external_firmware_handlers->end()) {
        return Error() << "found a previous external_firmware_handler with the same devpath, '"
                       << args[2] << "'";
                       << args[1] << "'";
    }

    passwd* pwd = getpwnam(args[2].c_str());
+11 −2
Original line number Diff line number Diff line
@@ -45,6 +45,13 @@ void TestSysfsPermissions(const SysfsPermissions& expected, const SysfsPermissio
    EXPECT_EQ(expected.attribute_, test.attribute_);
}

void TestExternalFirmwareHandler(const ExternalFirmwareHandler& expected,
                                 const ExternalFirmwareHandler& test) {
    EXPECT_EQ(expected.devpath, test.devpath) << expected.devpath;
    EXPECT_EQ(expected.uid, test.uid) << expected.uid;
    EXPECT_EQ(expected.handler_path, test.handler_path) << expected.handler_path;
}

template <typename T, typename F>
void TestVector(const T& expected, const T& test, F function) {
    ASSERT_EQ(expected.size(), test.size());
@@ -67,6 +74,8 @@ void TestUeventdFile(const std::string& content, const UeventdConfiguration& exp
    TestVector(expected.sysfs_permissions, result.sysfs_permissions, TestSysfsPermissions);
    TestVector(expected.dev_permissions, result.dev_permissions, TestPermissions);
    EXPECT_EQ(expected.firmware_directories, result.firmware_directories);
    TestVector(expected.external_firmware_handlers, result.external_firmware_handlers,
               TestExternalFirmwareHandler);
}

TEST(ueventd_parser, EmptyFile) {
@@ -144,7 +153,7 @@ TEST(ueventd_parser, ExternalFirmwareHandlers) {
    auto ueventd_file = R"(
external_firmware_handler devpath root handler_path
external_firmware_handler /devices/path/firmware/something001.bin system /vendor/bin/firmware_handler.sh
external_firmware_handler /devices/path/firmware/something001.bin radio "/vendor/bin/firmware_handler.sh --has --arguments"
external_firmware_handler /devices/path/firmware/something002.bin radio "/vendor/bin/firmware_handler.sh --has --arguments"
)";

    auto external_firmware_handlers = std::vector<ExternalFirmwareHandler>{
@@ -159,7 +168,7 @@ external_firmware_handler /devices/path/firmware/something001.bin radio "/vendor
                    "/vendor/bin/firmware_handler.sh",
            },
            {
                    "/devices/path/firmware/something001.bin",
                    "/devices/path/firmware/something002.bin",
                    AID_RADIO,
                    "/vendor/bin/firmware_handler.sh --has --arguments",
            },
+1 −2
Original line number Diff line number Diff line
@@ -363,9 +363,8 @@ rust_bindgen {
    local_include_dirs: ["include"],
    bindgen_flags: [
        "--whitelist-function", "multiuser_get_app_id",
        "--whitelist-function", "multiuser_get_uid",
        "--whitelist-function", "multiuser_get_user_id",
        "--whitelist-var", "AID_KEYSTORE",
        "--whitelist-function", "multiuser_get_uid",
        "--whitelist-var", "AID_USER_OFFSET",
    ],
}
+4 −0
Original line number Diff line number Diff line
@@ -14,6 +14,10 @@
// limitations under the License.
//

package {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

rust_bindgen {
    name: "libstatspull_bindgen",
    wrapper_src: "statslog.h",
Loading