diff options
| author | jvoisin | 2017-12-01 17:59:07 +0100 |
|---|---|---|
| committer | jvoisin | 2017-12-01 17:59:07 +0100 |
| commit | 424845a6938ffa9fba850b2285e2ab4ce60c89d0 (patch) | |
| tree | fac7acba8385fe16e662ce37754aed57d646a526 /src | |
| parent | 86dac0e21cb9547ce1544539bb0f2c2f73ca5f73 (diff) | |
Add a test that used to segfault
Diffstat (limited to 'src')
| -rw-r--r-- | src/sp_utils.c | 9 | ||||
| -rw-r--r-- | src/tests/config/config_dump_segfault1.ini | 1 | ||||
| -rw-r--r-- | src/tests/dump_segfault1.phpt | 13 |
3 files changed, 20 insertions, 3 deletions
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) { | |||
| 118 | const char* str; | 118 | const char* str; |
| 119 | const int key; | 119 | const int key; |
| 120 | } zones[] = {{"GET", TRACK_VARS_GET}, {"POST", TRACK_VARS_POST}, | 120 | } zones[] = {{"GET", TRACK_VARS_GET}, {"POST", TRACK_VARS_POST}, |
| 121 | {"COOKIE", TRACK_VARS_COOKIE}, {"SERVER", TRACK_VARS_SERVER}, | 121 | {"COOKIE", TRACK_VARS_COOKIE}, /*{"SERVER", TRACK_VARS_SERVER}, */ |
| 122 | {"ENV", TRACK_VARS_ENV}, {NULL, 0}}; | 122 | {"ENV", TRACK_VARS_ENV}, /*{"REQUEST", TRACK_VARS_REQUEST},*/ |
| 123 | {NULL, 0}}; | ||
| 124 | // Apparently, PHP has trouble always giving SERVER, | ||
| 125 | // and REQUEST is never used in its source code. | ||
| 123 | 126 | ||
| 124 | if (0 != construct_filename(filename, folder)) { | 127 | if (0 != construct_filename(filename, folder)) { |
| 125 | return -1; | 128 | return -1; |
| 126 | } | 129 | } |
| 127 | if (NULL == (file = fopen(filename, "a"))) { | 130 | if (NULL == (file = fopen(filename, "w+"))) { |
| 128 | sp_log_err("request_logging", "Unable to open %s", filename); | 131 | sp_log_err("request_logging", "Unable to open %s", filename); |
| 129 | return -1; | 132 | return -1; |
| 130 | } | 133 | } |
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 @@ | |||
| 1 | --TEST-- | ||
| 2 | Disable functions check on `ret` with an alias | ||
| 3 | --SKIPIF-- | ||
| 4 | <?php if (!extension_loaded("snuffleupagus")) die "skip"; ?> | ||
| 5 | --INI-- | ||
| 6 | sp.configuration_file={PWD}/config/config_dump_segfault1.ini | ||
| 7 | --FILE-- | ||
| 8 | <?php | ||
| 9 | echo strpos("pouet", "p") . "\n"; | ||
| 10 | ?> | ||
| 11 | --EXPECTF-- | ||
| 12 | [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'. | ||
| 13 | |||
