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

Commit 095374cd authored by Jingwen Chen's avatar Jingwen Chen Committed by Gerrit Code Review
Browse files

Merge "Make the host_init_verifier init.rc parser follow symlinks."

parents fad4ded8 f643b354
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -125,7 +125,7 @@ void InitParserFuzzer::InvokeParser() {
    std::string path = fdp_.ConsumeBool() ? fdp_.PickValueInArray(kValidPaths)
                                          : fdp_.ConsumeRandomLengthString(kMaxBytes);
    parser.ParseConfig(path);
    parser.ParseConfigFileInsecure(path);
    parser.ParseConfigFileInsecure(path, false /* follow_symlinks */);
}

void InitParserFuzzer::Process() {
+3 −1
Original line number Diff line number Diff line
@@ -326,7 +326,9 @@ int main(int argc, char** argv) {
            }
        }
    } else {
        if (!parser.ParseConfigFileInsecure(*argv)) {
        if (!parser.ParseConfigFileInsecure(*argv, true /* follow_symlinks */)) {
          // Follow symlinks as inputs during build execution in Bazel's
          // execution root are symlinks, unlike Soong or Make.
            LOG(ERROR) << "Failed to open init rc script '" << *argv << "'";
            return EXIT_FAILURE;
        }
+2 −2
Original line number Diff line number Diff line
@@ -131,9 +131,9 @@ void Parser::ParseData(const std::string& filename, std::string* data) {
    }
}

bool Parser::ParseConfigFileInsecure(const std::string& path) {
bool Parser::ParseConfigFileInsecure(const std::string& path, bool follow_symlinks = false) {
    std::string config_contents;
    if (!android::base::ReadFileToString(path, &config_contents)) {
    if (!android::base::ReadFileToString(path, &config_contents, follow_symlinks)) {
        return false;
    }

+1 −1
Original line number Diff line number Diff line
@@ -77,7 +77,7 @@ class Parser {
    void AddSingleLineParser(const std::string& prefix, LineCallback callback);

    // Host init verifier check file permissions.
    bool ParseConfigFileInsecure(const std::string& path);
    bool ParseConfigFileInsecure(const std::string& path, bool follow_symlinks);

    size_t parse_error_count() const { return parse_error_count_; }