Avoid using IO module in the fuzztest_macros. PiperOrigin-RevId: 736953032
diff --git a/fuzztest/fuzztest_macros.cc b/fuzztest/fuzztest_macros.cc index a6a143c..11baebd 100644 --- a/fuzztest/fuzztest_macros.cc +++ b/fuzztest/fuzztest_macros.cc
@@ -149,22 +149,22 @@ std::vector<std::string> ReadDictionaryFromFile( std::string_view dictionary_file) { - std::vector<fuzztest::internal::FilePathAndData> files = - fuzztest::internal::ReadFileOrDirectory( - {dictionary_file.data(), dictionary_file.size()}); - - std::vector<std::string> out; - // Dictionary must be in the format specified at + FUZZTEST_INTERNAL_CHECK_PRECONDITION( + !std::filesystem::is_directory(dictionary_file), + "Not a file: ", dictionary_file); + const std::filesystem::path fs_path(dictionary_file); + std::ifstream stream(fs_path); + CHECK(stream.good()) << "Error reading " << fs_path.string() << ": (" << errno + << ") " << strerror(errno); + std::stringstream buffer; + buffer << stream.rdbuf(); // https://llvm.org/docs/LibFuzzer.html#dictionaries - for (const fuzztest::internal::FilePathAndData& file : files) { - absl::StatusOr<std::vector<std::string>> parsed_entries = - ParseDictionary(file.data); - CHECK(parsed_entries.status().ok()) - << "Could not parse dictionary file " << file.path << ": " - << parsed_entries.status(); - out.insert(out.end(), parsed_entries->begin(), parsed_entries->end()); - } - return out; + absl::StatusOr<std::vector<std::string>> parsed_entries = + ParseDictionary(buffer.str()); + CHECK(parsed_entries.status().ok()) + << "Could not parse dictionary file " << fs_path << ": " + << parsed_entries.status(); + return *parsed_entries; } } // namespace fuzztest