diff options
| author | Joey Jiao <joeyjiaojg@gmail.com> | 2021-03-12 18:13:14 +0800 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2021-03-18 15:08:51 +0100 |
| commit | 14a65c40375a6cd73e91ed2093610b136dfdb55d (patch) | |
| tree | 628ae19761593b3bc97daac2eba810e1b72de78d /executor | |
| parent | ef6fdc55e0277315f8becdf4a933cf4a67027adb (diff) | |
executor, syz-fuzzer: fix readonly root
Diffstat (limited to 'executor')
| -rw-r--r-- | executor/cov_filter.h | 8 | ||||
| -rw-r--r-- | executor/executor.cc | 12 |
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; |
