diff --git a/CHANGES b/CHANGES index 6d57a8caa8..ae4972788f 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,8 @@ +2.5-619 | 2018-06-01 11:29:15 -0500 + + * Relocate temporary script coverage files (Corelight) + 2.5-618 | 2018-06-01 10:03:24 -0500 * BIT-1635: fix `make doc` warnings (Corelight) diff --git a/VERSION b/VERSION index 05bbcf298c..344be7760a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.5-618 +2.5-619 diff --git a/src/Brofiler.cc b/src/Brofiler.cc index e7d8c8fdeb..a31ec469f0 100644 --- a/src/Brofiler.cc +++ b/src/Brofiler.cc @@ -50,10 +50,18 @@ bool Brofiler::WriteStats() char* bf = getenv("BRO_PROFILER_FILE"); if ( ! bf ) return false; - FILE* f; - const char* p = strstr(bf, ".XXXXXX"); + SafeDirname dirname{bf}; - if ( p && ! p[7] ) + if ( ! ensure_intermediate_dirs(dirname.result.data()) ) + { + reporter->Error("Failed to open BRO_PROFILER_FILE destination '%s' for writing", bf); + return false; + } + + FILE* f; + const char* p = strstr(bf, "XXXXXX"); + + if ( p && ! p[6] ) { mode_t old_umask = umask(S_IXUSR | S_IRWXO | S_IRWXG); int fd = mkstemp(bf); diff --git a/testing/btest/Makefile b/testing/btest/Makefile index 56bf8f0a7e..c9bcfff5ee 100644 --- a/testing/btest/Makefile +++ b/testing/btest/Makefile @@ -1,6 +1,7 @@ DIAG=diag.log BTEST=../../aux/btest/btest +SCRIPT_COV=.tmp/script-coverage all: cleanup btest-verbose coverage @@ -15,11 +16,11 @@ btest-brief: @$(BTEST) -j -b -f $(DIAG) coverage: - @../scripts/coverage-calc ".tmp/script-coverage*" coverage.log `pwd`/../../scripts + @../scripts/coverage-calc "$(SCRIPT_COV)/*" coverage.log `pwd`/../../scripts cleanup: @rm -f $(DIAG) - @rm -f .tmp/script-coverage* + @rm -rf $(SCRIPT_COV)* distclean: cleanup @rm -rf .btest.failed.dat \ diff --git a/testing/btest/btest.cfg b/testing/btest/btest.cfg index 2b9d75287f..8a69f5eddc 100644 --- a/testing/btest/btest.cfg +++ b/testing/btest/btest.cfg @@ -22,6 +22,6 @@ DIST=%(testbase)s/../.. BUILD=%(testbase)s/../../build TEST_DIFF_CANONIFIER=%(testbase)s/../scripts/diff-canonifier TMPDIR=%(testbase)s/.tmp -BRO_PROFILER_FILE=%(testbase)s/.tmp/script-coverage.XXXXXX +BRO_PROFILER_FILE=%(testbase)s/.tmp/script-coverage/XXXXXX BTEST_RST_FILTER=$SCRIPTS/rst-filter BRO_DNS_FAKE=1 diff --git a/testing/external/subdir-btest.cfg b/testing/external/subdir-btest.cfg index 4315ade850..39aaead17a 100644 --- a/testing/external/subdir-btest.cfg +++ b/testing/external/subdir-btest.cfg @@ -18,7 +18,7 @@ SCRIPTS=%(testbase)s/../scripts SCRIPTS_LOCAL=%(testbase)s/scripts DIST=%(testbase)s/../../.. BUILD=%(testbase)s/../../../build -BRO_PROFILER_FILE=%(testbase)s/.tmp/script-coverage.XXXXXX +BRO_PROFILER_FILE=%(testbase)s/.tmp/script-coverage/XXXXXX BRO_DNS_FAKE=1 # For fedora 21 - they disable MD5 for certificate verification and need setting an environment variable to permit it. OPENSSL_ENABLE_MD5_VERIFY=1