From 14a65c40375a6cd73e91ed2093610b136dfdb55d Mon Sep 17 00:00:00 2001 From: Joey Jiao Date: Fri, 12 Mar 2021 18:13:14 +0800 Subject: executor, syz-fuzzer: fix readonly root --- executor/cov_filter.h | 8 ++++---- executor/executor.cc | 12 +++++++++++- syz-fuzzer/fuzzer.go | 4 ++-- 3 files changed, 17 insertions(+), 7 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; diff --git a/syz-fuzzer/fuzzer.go b/syz-fuzzer/fuzzer.go index 0d078699d..634ac491f 100644 --- a/syz-fuzzer/fuzzer.go +++ b/syz-fuzzer/fuzzer.go @@ -206,8 +206,8 @@ func main() { log.Fatal(err) } if r.CoverFilterBitmap != nil { - if err := osutil.WriteFile("/syz-cover-bitmap", r.CoverFilterBitmap); err != nil { - log.Fatalf("failed to write /syz-cover-bitmap: %v", err) + if err := osutil.WriteFile("syz-cover-bitmap", r.CoverFilterBitmap); err != nil { + log.Fatalf("failed to write syz-cover-bitmap: %v", err) } } if r.CheckResult == nil { -- cgit mrf-deployment