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

This commit is contained in:
Jingwen Chen 2023-03-17 06:42:04 +00:00 committed by Gerrit Code Review
commit 095374cde7
4 changed files with 7 additions and 5 deletions

View file

@ -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() {

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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_; }