From 424845a6938ffa9fba850b2285e2ab4ce60c89d0 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Fri, 1 Dec 2017 17:59:07 +0100 Subject: Add a test that used to segfault --- src/sp_utils.c | 9 ++++++--- src/tests/config/config_dump_segfault1.ini | 1 + src/tests/dump_segfault1.phpt | 13 +++++++++++++ 3 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 src/tests/config/config_dump_segfault1.ini create mode 100644 src/tests/dump_segfault1.phpt (limited to 'src') diff --git a/src/sp_utils.c b/src/sp_utils.c index d4ca73d..e2747fb 100644 --- a/src/sp_utils.c +++ b/src/sp_utils.c @@ -118,13 +118,16 @@ int sp_log_request(const char* folder) { const char* str; const int key; } zones[] = {{"GET", TRACK_VARS_GET}, {"POST", TRACK_VARS_POST}, - {"COOKIE", TRACK_VARS_COOKIE}, {"SERVER", TRACK_VARS_SERVER}, - {"ENV", TRACK_VARS_ENV}, {NULL, 0}}; + {"COOKIE", TRACK_VARS_COOKIE}, /*{"SERVER", TRACK_VARS_SERVER}, */ + {"ENV", TRACK_VARS_ENV}, /*{"REQUEST", TRACK_VARS_REQUEST},*/ + {NULL, 0}}; + // Apparently, PHP has trouble always giving SERVER, + // and REQUEST is never used in its source code. if (0 != construct_filename(filename, folder)) { return -1; } - if (NULL == (file = fopen(filename, "a"))) { + if (NULL == (file = fopen(filename, "w+"))) { sp_log_err("request_logging", "Unable to open %s", filename); return -1; } diff --git a/src/tests/config/config_dump_segfault1.ini b/src/tests/config/config_dump_segfault1.ini new file mode 100644 index 0000000..5db57a4 --- /dev/null +++ b/src/tests/config/config_dump_segfault1.ini @@ -0,0 +1 @@ +sp.disable_function.function("strpos").ret("0").drop().alias("test").dump("/tmp/dump_results/"); diff --git a/src/tests/dump_segfault1.phpt b/src/tests/dump_segfault1.phpt new file mode 100644 index 0000000..c524f91 --- /dev/null +++ b/src/tests/dump_segfault1.phpt @@ -0,0 +1,13 @@ +--TEST-- +Disable functions check on `ret` with an alias +--SKIPIF-- + +--INI-- +sp.configuration_file={PWD}/config/config_dump_segfault1.ini +--FILE-- + +--EXPECTF-- +[snuffleupagus][0.0.0.0][disabled_function][drop] The execution has been aborted in %a/tests/dump_segfault1.php:2, because the function 'strpos' returned '0', which matched the rule 'test'. + -- cgit v1.3