Make the host_init_verifier init.rc parser follow symlinks.
Bazel's intermediates/inputs are symlinks in its execution root, unlike Soong. e.g. $ file $(readlink -f out/bazel/output/execroot/__main__/packages/modules/adb/apex/adbd.rc) /usr/local/google/home/jingwen/aosp/master-with-phones/packages/modules/adb/apex/adbd.rc: ASCII text Test: presubmits Change-Id: I3977a37ee989e07bee56abb019a21055b8cef567
This commit is contained in:
parent
dc8a0b820e
commit
f643b354fe
4 changed files with 7 additions and 5 deletions
|
@ -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() {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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_; }
|
||||
|
||||
|
|
Loading…
Reference in a new issue