aboutsummaryrefslogtreecommitdiffstats
path: root/executor
diff options
context:
space:
mode:
authorJoey Jiao <joeyjiaojg@gmail.com>2021-03-12 18:13:14 +0800
committerDmitry Vyukov <dvyukov@google.com>2021-03-18 15:08:51 +0100
commit14a65c40375a6cd73e91ed2093610b136dfdb55d (patch)
tree628ae19761593b3bc97daac2eba810e1b72de78d /executor
parentef6fdc55e0277315f8becdf4a933cf4a67027adb (diff)
executor, syz-fuzzer: fix readonly root
Diffstat (limited to 'executor')
-rw-r--r--executor/cov_filter.h8
-rw-r--r--executor/executor.cc12
2 files changed, 15 insertions, 5 deletions
diff --git a/executor/cov_filter.h b/executor/cov_filter.h
index a8b6624fe..8c7531d1f 100644
--- a/executor/cov_filter.h
+++ b/executor/cov_filter.h
@@ -14,13 +14,13 @@ struct cov_filter_t {
static cov_filter_t* cov_filter;
-static void init_coverage_filter()
+static void init_coverage_filter(char* filename)
{
- int f = open("/syz-cover-bitmap", O_RDONLY);
+ int f = open(filename, O_RDONLY);
if (f < 0) {
// We don't fail here because we don't know yet if we should use coverage filter or not.
// We will receive the flag only in execute flags and will fail in coverage_filter if necessary.
- debug("bitmap is no found, coverage filter disabled\n");
+ debug("bitmap is not found, coverage filter disabled\n");
return;
}
struct stat st;
@@ -55,7 +55,7 @@ static bool coverage_filter(uint64 pc)
}
#else
-static void init_coverage_filter()
+static void init_coverage_filter(char* filename)
{
}
#endif
diff --git a/executor/executor.cc b/executor/executor.cc
index 35123b32d..161616be4 100644
--- a/executor/executor.cc
+++ b/executor/executor.cc
@@ -444,7 +444,17 @@ int main(int argc, char** argv)
// Don't enable comps because we don't use them in the fuzzer yet.
cover_enable(&extra_cov, false, true);
}
- init_coverage_filter();
+ char sep = '/';
+#if GOOS_windows
+ sep = '\\';
+#endif
+ char filename[1024] = {0};
+ char* end = strrchr(argv[0], sep);
+ size_t len = end - argv[0];
+ strncpy(filename, argv[0], len + 1);
+ strncat(filename, "syz-cover-bitmap", 17);
+ filename[sizeof(filename) - 1] = '\0';
+ init_coverage_filter(filename);
}
int status = 0;