Revert "[fuzzer] Create user provided fuzzer writeable directories when requested if they dont exist"
This reverts commit cb8912799d4372a3a1c0bf528bb4c4885caf4c45, since the
test fails on Windows.
GitOrigin-RevId: 10670bdf5451b85c5613cec0e8a78303f8914bfb
diff --git a/FuzzerDriver.cpp b/FuzzerDriver.cpp
index 2615014..4669b12 100644
--- a/FuzzerDriver.cpp
+++ b/FuzzerDriver.cpp
@@ -250,26 +250,11 @@
}
}
-static void ValidateDirectoryExists(const std::string &Path,
- bool CreateDirectory) {
- if (Path.empty()) {
- Printf("ERROR: Provided directory path is an empty string\n");
+static void ValidateDirectoryExists(const std::string &Path) {
+ if (!Path.empty() && !IsDirectory(Path)) {
+ Printf("ERROR: The required directory \"%s\" does not exist\n", Path.c_str());
exit(1);
}
-
- if (IsDirectory(Path))
- return;
-
- if (CreateDirectory) {
- if (!MkDirRecursive(Path)) {
- Printf("ERROR: Failed to create directory \"%s\"\n", Path.c_str());
- exit(1);
- }
- return;
- }
-
- Printf("ERROR: The required directory \"%s\" does not exist\n", Path.c_str());
- exit(1);
}
std::string CloneArgsWithoutX(const Vector<std::string> &Args,
@@ -706,7 +691,7 @@
std::string OutputCorpusDir = (*Inputs)[0];
if (!IsFile(OutputCorpusDir)) {
Options.OutputCorpus = OutputCorpusDir;
- ValidateDirectoryExists(Options.OutputCorpus, Flags.create_missing_dirs);
+ ValidateDirectoryExists(Options.OutputCorpus);
}
}
Options.ReportSlowUnits = Flags.report_slow_units;
@@ -720,12 +705,11 @@
if (!IsSeparator(ArtifactPathDir[ArtifactPathDir.length() - 1])) {
ArtifactPathDir = DirName(ArtifactPathDir);
}
- ValidateDirectoryExists(ArtifactPathDir, Flags.create_missing_dirs);
+ ValidateDirectoryExists(ArtifactPathDir);
}
if (Flags.exact_artifact_path) {
Options.ExactArtifactPath = Flags.exact_artifact_path;
- ValidateDirectoryExists(DirName(Options.ExactArtifactPath),
- Flags.create_missing_dirs);
+ ValidateDirectoryExists(DirName(Options.ExactArtifactPath));
}
Vector<Unit> Dictionary;
if (Flags.dict)
@@ -751,7 +735,7 @@
Options.DataFlowTrace = Flags.data_flow_trace;
if (Flags.features_dir) {
Options.FeaturesDir = Flags.features_dir;
- ValidateDirectoryExists(Options.FeaturesDir, Flags.create_missing_dirs);
+ ValidateDirectoryExists(Options.FeaturesDir);
}
if (Flags.collect_data_flow)
Options.CollectDataFlow = Flags.collect_data_flow;
diff --git a/FuzzerFlags.def b/FuzzerFlags.def
index 8114791..832224a 100644
--- a/FuzzerFlags.def
+++ b/FuzzerFlags.def
@@ -167,7 +167,3 @@
FUZZER_FLAG_STRING(data_flow_trace, "Experimental: use the data flow trace")
FUZZER_FLAG_STRING(collect_data_flow,
"Experimental: collect the data flow trace")
-
-FUZZER_FLAG_INT(create_missing_dirs, 0, "Automatically attempt to create "
- "directories for arguments that would normally expect them to already "
- "exist (i.e. artifact_prefix, exact_artifact_path, features_dir, corpus)")
diff --git a/FuzzerIO.cpp b/FuzzerIO.cpp
index c3330c3..cbb1dbe 100644
--- a/FuzzerIO.cpp
+++ b/FuzzerIO.cpp
@@ -144,38 +144,6 @@
fflush(OutputFile);
}
-static bool MkDirRecursiveInner(const std::string &Leaf) {
- // Prevent chance of potential infinite recursion
- if (Leaf == ".")
- return true;
-
- const std::string &Dir = DirName(Leaf);
-
- if (IsDirectory(Dir)) {
- MkDir(Leaf);
- return IsDirectory(Leaf);
- }
-
- bool ret = MkDirRecursiveInner(Dir);
- if (!ret) {
- // Give up early if a previous MkDir failed
- return ret;
- }
-
- MkDir(Leaf);
- return IsDirectory(Leaf);
-}
-
-bool MkDirRecursive(const std::string &Dir) {
- if (Dir.empty())
- return false;
-
- if (IsDirectory(Dir))
- return true;
-
- return MkDirRecursiveInner(Dir);
-}
-
void RmDirRecursive(const std::string &Dir) {
IterateDirRecursive(
Dir, [](const std::string &Path) {},
diff --git a/FuzzerIO.h b/FuzzerIO.h
index 6e3a0b4..8def2e9 100644
--- a/FuzzerIO.h
+++ b/FuzzerIO.h
@@ -64,7 +64,6 @@
void ListFilesInDirRecursive(const std::string &Dir, long *Epoch,
Vector<std::string> *V, bool TopDir);
-bool MkDirRecursive(const std::string &Dir);
void RmDirRecursive(const std::string &Dir);
// Iterate files and dirs inside Dir, recursively.