summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/sp_config.c20
-rw-r--r--src/sp_config.h2
-rw-r--r--src/sp_config_keywords.c44
-rw-r--r--src/sp_config_utils.c20
-rw-r--r--src/tests/broken_conf.phpt2
-rw-r--r--src/tests/broken_conf2.phpt2
-rw-r--r--src/tests/broken_conf_config_regexp.phpt4
-rw-r--r--src/tests/broken_conf_enable_disable.phpt2
-rw-r--r--src/tests/broken_conf_expecting_bool.phpt2
-rw-r--r--src/tests/broken_conf_expecting_int.phpt2
-rw-r--r--src/tests/broken_conf_invalid_cidr_value.phpt4
-rw-r--r--src/tests/broken_conf_invalid_type.phpt2
-rw-r--r--src/tests/broken_conf_line_empty_string.phpt2
-rw-r--r--src/tests/broken_conf_line_no_closing.phpt2
-rw-r--r--src/tests/broken_conf_line_too_long.phpt4
-rw-r--r--src/tests/broken_conf_lots_of_quotes.phpt2
-rw-r--r--src/tests/broken_conf_mutually_exclusive.phpt2
-rw-r--r--src/tests/broken_conf_mutually_exclusive2.phpt2
-rw-r--r--src/tests/broken_conf_mutually_exclusive3.phpt2
-rw-r--r--src/tests/broken_conf_mutually_exclusive4.phpt2
-rw-r--r--src/tests/broken_conf_mutually_exclusive5.phpt2
-rw-r--r--src/tests/broken_conf_mutually_exclusive6.phpt2
-rw-r--r--src/tests/broken_conf_mutually_exclusive7.phpt2
-rw-r--r--src/tests/broken_conf_mutually_exclusive8.phpt2
-rw-r--r--src/tests/broken_conf_no_closing_misc.phpt4
-rw-r--r--src/tests/broken_conf_weird_keyword.phpt2
-rw-r--r--src/tests/broken_conf_wrong_quotes.phpt2
-rw-r--r--src/tests/broken_conf_wrong_type.phpt2
-rw-r--r--src/tests/broken_regexp.phpt2
29 files changed, 76 insertions, 68 deletions
diff --git a/src/sp_config.c b/src/sp_config.c
index 37a34b9..3da027c 100644
--- a/src/sp_config.c
+++ b/src/sp_config.c
@@ -6,6 +6,8 @@
6 6
7ZEND_DECLARE_MODULE_GLOBALS(snuffleupagus) 7ZEND_DECLARE_MODULE_GLOBALS(snuffleupagus)
8 8
9size_t sp_line_no;
10
9sp_config_tokens const sp_func[] = { 11sp_config_tokens const sp_func[] = {
10 {.func = parse_unserialize, .token = SP_TOKEN_UNSERIALIZE_HMAC}, 12 {.func = parse_unserialize, .token = SP_TOKEN_UNSERIALIZE_HMAC},
11 {.func = parse_random, .token = SP_TOKEN_HARDEN_RANDOM}, 13 {.func = parse_random, .token = SP_TOKEN_HARDEN_RANDOM},
@@ -33,7 +35,7 @@ static int parse_line(char *line) {
33 } 35 }
34 36
35 if (strncmp(ptr, SP_TOKEN_BASE, strlen(SP_TOKEN_BASE))) { 37 if (strncmp(ptr, SP_TOKEN_BASE, strlen(SP_TOKEN_BASE))) {
36 sp_log_err("config", "Invalid configuration prefix for '%s'.", line); 38 sp_log_err("config", "Invalid configuration prefix for '%s' on line %zu.", line, sp_line_no);
37 return -1; 39 return -1;
38 } 40 }
39 ptr += strlen(SP_TOKEN_BASE); 41 ptr += strlen(SP_TOKEN_BASE);
@@ -43,7 +45,7 @@ static int parse_line(char *line) {
43 return sp_func[i].func(ptr + strlen(sp_func[i].token)); 45 return sp_func[i].func(ptr + strlen(sp_func[i].token));
44 } 46 }
45 } 47 }
46 sp_log_err("config", "Invalid configuration section '%s'.", line); 48 sp_log_err("config", "Invalid configuration section '%s' on line %zu.", line, sp_line_no);
47 return -1; 49 return -1;
48} 50}
49 51
@@ -61,7 +63,7 @@ int parse_int(char *restrict line, char *restrict keyword, void *retval) {
61 pefree(value, 1); 63 pefree(value, 1);
62 return consumed; 64 return consumed;
63 } else { 65 } else {
64 sp_log_err("error", "%s) is expecting a valid integer.", keyword); 66 sp_log_err("error", "%s) is expecting a valid integer on line %zu.", keyword, sp_line_no);
65 return -1; 67 return -1;
66 } 68 }
67} 69}
@@ -96,7 +98,7 @@ int parse_php_type(char *restrict line, char *restrict keyword, void *retval) {
96 pefree(value, 1); 98 pefree(value, 1);
97 sp_log_err("error", "%s) is expecting a valid php type ('false', 'true'," 99 sp_log_err("error", "%s) is expecting a valid php type ('false', 'true',"
98 " 'array'. 'object', 'long', 'double', 'null', 'resource', 'reference'," 100 " 'array'. 'object', 'long', 'double', 'null', 'resource', 'reference',"
99 " 'undef').", keyword); 101 " 'undef') on line %zu.", keyword, sp_line_no);
100 return -1; 102 return -1;
101 } 103 }
102 pefree(value, 1); 104 pefree(value, 1);
@@ -130,7 +132,7 @@ int parse_cidr(char *restrict line, char *restrict keyword, void *retval) {
130 *(sp_cidr **)retval = cidr; 132 *(sp_cidr **)retval = cidr;
131 return consumed; 133 return consumed;
132 } else { 134 } else {
133 sp_log_err("config", "%s doesn't contain a valid cidr.", line); 135 sp_log_err("config", "%s doesn't contain a valid cidr on line %zu.", line, sp_line_no);
134 return -1; 136 return -1;
135 } 137 }
136} 138}
@@ -148,7 +150,7 @@ int parse_regexp(char *restrict line, char *restrict keyword, void *retval) {
148 pcre *compiled_re = sp_pcre_compile(value, PCRE_CASELESS, &pcre_error, 150 pcre *compiled_re = sp_pcre_compile(value, PCRE_CASELESS, &pcre_error,
149 &pcre_error_offset, NULL); 151 &pcre_error_offset, NULL);
150 if (NULL == compiled_re) { 152 if (NULL == compiled_re) {
151 sp_log_err("config", "Failed to compile '%s': %s.", value, pcre_error); 153 sp_log_err("config", "Failed to compile '%s': %s on line %zu.", value, pcre_error, sp_line_no);
152 } else { 154 } else {
153 *(pcre **)retval = compiled_re; 155 *(pcre **)retval = compiled_re;
154 return consumed; 156 return consumed;
@@ -158,8 +160,8 @@ int parse_regexp(char *restrict line, char *restrict keyword, void *retval) {
158 if (NULL != closing_paren) { 160 if (NULL != closing_paren) {
159 closing_paren[0] = '\0'; 161 closing_paren[0] = '\0';
160 } 162 }
161 sp_log_err("config", "'%s)' is expecting a valid regexp, and not '%s'.", 163 sp_log_err("config", "'%s)' is expecting a valid regexp, and not '%s' on line %zu.",
162 keyword, line); 164 keyword, line, sp_line_no);
163 return -1; 165 return -1;
164} 166}
165 167
@@ -167,6 +169,7 @@ int sp_parse_config(const char *conf_file) {
167 FILE *fd = fopen(conf_file, "r"); 169 FILE *fd = fopen(conf_file, "r");
168 char *lineptr = NULL; 170 char *lineptr = NULL;
169 size_t n = 0; 171 size_t n = 0;
172 sp_line_no = 1;
170 173
171 if (fd == NULL) { 174 if (fd == NULL) {
172 sp_log_err("config", "Could not open configuration file %s : %s", conf_file, 175 sp_log_err("config", "Could not open configuration file %s : %s", conf_file,
@@ -187,6 +190,7 @@ int sp_parse_config(const char *conf_file) {
187 free(lineptr); 190 free(lineptr);
188 lineptr = NULL; 191 lineptr = NULL;
189 n = 0; 192 n = 0;
193 sp_line_no++;
190 } 194 }
191 fclose(fd); 195 fclose(fd);
192 return SUCCESS; 196 return SUCCESS;
diff --git a/src/sp_config.h b/src/sp_config.h
index 54ec2cc..8d41333 100644
--- a/src/sp_config.h
+++ b/src/sp_config.h
@@ -5,6 +5,8 @@
5#include <netinet/in.h> 5#include <netinet/in.h>
6#include <sys/socket.h> 6#include <sys/socket.h>
7 7
8extern size_t sp_line_no;
9
8typedef enum { 10typedef enum {
9 SP_TYPE_STR = 0, 11 SP_TYPE_STR = 0,
10 SP_TYPE_REGEXP, 12 SP_TYPE_REGEXP,
diff --git a/src/sp_config_keywords.c b/src/sp_config_keywords.c
index 4a6dd3a..b068bec 100644
--- a/src/sp_config_keywords.c
+++ b/src/sp_config_keywords.c
@@ -17,7 +17,7 @@ static int parse_enable(char *line, bool * restrict retval, bool * restrict simu
17 } 17 }
18 18
19 if (!(enable ^ disable)) { 19 if (!(enable ^ disable)) {
20 sp_log_err("config", "A rule can't be enabled and disabled."); 20 sp_log_err("config", "A rule can't be enabled and disabled on line %zu.", sp_line_no);
21 return -1; 21 return -1;
22 } 22 }
23 23
@@ -135,50 +135,50 @@ int parse_disabled_functions(char *line) {
135 if (df->value && df->regexp) { 135 if (df->value && df->regexp) {
136 sp_log_err("config", 136 sp_log_err("config",
137 "Invalid configuration line: 'sp.disabled_functions%s':" 137 "Invalid configuration line: 'sp.disabled_functions%s':"
138 "'.value' and '.regexp' are mutually exclusives.", 138 "'.value' and '.regexp' are mutually exclusives on line %zu.",
139 line); 139 line, sp_line_no);
140 return -1; 140 return -1;
141 } else if (df->r_function && df->function) { 141 } else if (df->r_function && df->function) {
142 sp_log_err("config", 142 sp_log_err("config",
143 "Invalid configuration line: 'sp.disabled_functions%s': " 143 "Invalid configuration line: 'sp.disabled_functions%s': "
144 "'.r_function' and '.function' are mutually exclusive.", 144 "'.r_function' and '.function' are mutually exclusive on line %zu.",
145 line); 145 line, sp_line_no);
146 return -1; 146 return -1;
147 } else if (df->r_filename && df->filename) { 147 } else if (df->r_filename && df->filename) {
148 sp_log_err("config", 148 sp_log_err("config",
149 "Invalid configuration line: 'sp.disabled_functions%s':" 149 "Invalid configuration line: 'sp.disabled_functions%s':"
150 "'.r_filename' and '.filename' are mutually exclusive.", 150 "'.r_filename' and '.filename' are mutually exclusive on line %zu.",
151 line); 151 line, sp_line_no);
152 return -1; 152 return -1;
153 } else if (df->r_param && df->param) { 153 } else if (df->r_param && df->param) {
154 sp_log_err("config", 154 sp_log_err("config",
155 "Invalid configuration line: 'sp.disabled_functions%s':" 155 "Invalid configuration line: 'sp.disabled_functions%s':"
156 "'.r_param' and '.param' are mutually exclusive.", 156 "'.r_param' and '.param' are mutually exclusive on line %zu.",
157 line); 157 line, sp_line_no);
158 return -1; 158 return -1;
159 } else if (df->r_ret && df->ret) { 159 } else if (df->r_ret && df->ret) {
160 sp_log_err("config", 160 sp_log_err("config",
161 "Invalid configuration line: 'sp.disabled_functions%s':" 161 "Invalid configuration line: 'sp.disabled_functions%s':"
162 "'.r_ret' and '.ret' are mutually exclusive.", 162 "'.r_ret' and '.ret' are mutually exclusive on line %zu.",
163 line); 163 line, sp_line_no);
164 return -1; 164 return -1;
165 } else if ((df->r_ret || df->ret) && (df->r_param || df->param)) { 165 } else if ((df->r_ret || df->ret) && (df->r_param || df->param)) {
166 sp_log_err("config", 166 sp_log_err("config",
167 "Invalid configuration line: 'sp.disabled_functions%s':" 167 "Invalid configuration line: 'sp.disabled_functions%s':"
168 "`ret` and `param` are mutually exclusives.", 168 "`ret` and `param` are mutually exclusive on line %zu.",
169 line); 169 line, sp_line_no);
170 return -1; 170 return -1;
171 } else if (!(df->r_function || df->function)) { 171 } else if (!(df->r_function || df->function)) {
172 sp_log_err("config", 172 sp_log_err("config",
173 "Invalid configuration line: 'sp.disabled_functions%s':" 173 "Invalid configuration line: 'sp.disabled_functions%s':"
174 " must take a function name.", 174 " must take a function name on line %zu.",
175 line); 175 line, sp_line_no);
176 return -1; 176 return -1;
177 } else if (!(df->allow ^ df->drop)) { 177 } else if (!(df->allow ^ df->drop)) {
178 sp_log_err("config", 178 sp_log_err("config",
179 "Invalid configuration line: 'sp.disabled_functions%s': The " 179 "Invalid configuration line: 'sp.disabled_functions%s': The "
180 "rule must either be a `drop` or and `allow` one.", 180 "rule must either be a `drop` or and `allow` one on line %zu.",
181 line); 181 line, sp_line_no);
182 return -1; 182 return -1;
183 } 183 }
184 184
@@ -245,7 +245,7 @@ int parse_upload_validation(char *line) {
245 } 245 }
246 246
247 if (!(enable ^ disable)) { 247 if (!(enable ^ disable)) {
248 sp_log_err("config", "A rule can't be enabled and disabled."); 248 sp_log_err("config", "A rule can't be enabled and disabled on line %zu.", sp_line_no);
249 return -1; 249 return -1;
250 } 250 }
251 SNUFFLEUPAGUS_G(config).config_upload_validation->enable = enable; 251 SNUFFLEUPAGUS_G(config).config_upload_validation->enable = enable;
@@ -253,14 +253,14 @@ int parse_upload_validation(char *line) {
253 char const *script = SNUFFLEUPAGUS_G(config).config_upload_validation->script; 253 char const *script = SNUFFLEUPAGUS_G(config).config_upload_validation->script;
254 254
255 if (!script) { 255 if (!script) {
256 sp_log_err("config", "The `script` directive is mandatory in %s", 256 sp_log_err("config", "The `script` directive is mandatory in '%s' on line %zu.",
257 line); 257 line, sp_line_no);
258 return -1; 258 return -1;
259 } else if (-1 == access(script, F_OK)) { 259 } else if (-1 == access(script, F_OK)) {
260 sp_log_err("config", "The `script` (%s) doesn't exist.", script); 260 sp_log_err("config", "The `script` (%s) doesn't exist on line %zu.", script, sp_line_no);
261 return -1; 261 return -1;
262 } else if (-1 == access(script, X_OK)) { 262 } else if (-1 == access(script, X_OK)) {
263 sp_log_err("config", "The `script` (%s) isn't executable.", script); 263 sp_log_err("config", "The `script` (%s) isn't executable on line %zu.", script, sp_line_no);
264 return -1; 264 return -1;
265 } 265 }
266 266
diff --git a/src/sp_config_utils.c b/src/sp_config_utils.c
index e05e95e..39951cc 100644
--- a/src/sp_config_utils.c
+++ b/src/sp_config_utils.c
@@ -1,5 +1,7 @@
1#include "php_snuffleupagus.h" 1#include "php_snuffleupagus.h"
2 2
3size_t sp_line_no;
4
3static int validate_int(const char *value); 5static int validate_int(const char *value);
4static int validate_str(const char *value); 6static int validate_str(const char *value);
5 7
@@ -55,8 +57,8 @@ int parse_keywords(sp_config_functions *funcs, char *line) {
55 } 57 }
56 58
57 if (*line) { 59 if (*line) {
58 sp_log_err("config", "Trailing chars '%s' at the end of '%s'.", line, 60 sp_log_err("config", "Trailing chars '%s' at the end of '%s' on line %zu.",
59 original_line); 61 line, original_line, sp_line_no);
60 return -1; 62 return -1;
61 } 63 }
62 return 0; 64 return 0;
@@ -116,8 +118,8 @@ static char *get_string(size_t *consumed, char *restrict line,
116 } 118 }
117err: 119err:
118 sp_log_err("error", 120 sp_log_err("error",
119 "There is an issue with the parsing of '%s': it doesn't look like a valid string.", 121 "There is an issue with the parsing of '%s': it doesn't look like a valid string on line %zu.",
120 original_line ? original_line : "NULL"); 122 original_line ? original_line : "NULL", sp_line_no);
121 line = NULL; 123 line = NULL;
122 return NULL; 124 return NULL;
123} 125}
@@ -133,15 +135,15 @@ static char *get_misc(char *restrict line, const char *restrict keyword) {
133 135
134 if (line[i] != SP_TOKEN_END_PARAM) { 136 if (line[i] != SP_TOKEN_END_PARAM) {
135 if (i >= 1024 - 1) { 137 if (i >= 1024 - 1) {
136 sp_log_err("config", "The following line is too long: %s.", line); 138 sp_log_err("config", "The following line is too long: %s on line %zu.", line, sp_line_no);
137 } else { 139 } else {
138 sp_log_err("config", "Missing closing %c in line %s.", SP_TOKEN_END_PARAM, 140 sp_log_err("config", "Missing closing %c in line %s on line %zu.", SP_TOKEN_END_PARAM,
139 line); 141 line, sp_line_no);
140 } 142 }
141 return NULL; 143 return NULL;
142 } else if (i == 0) { 144 } else if (i == 0) {
143 sp_log_err("config", "The keyword %s%c is expecting a parameter.", 145 sp_log_err("config", "The keyword %s%c is expecting a parameter on line %zu.",
144 keyword, SP_TOKEN_END_PARAM); 146 keyword, SP_TOKEN_END_PARAM, sp_line_no);
145 return NULL; 147 return NULL;
146 } 148 }
147 return ret; 149 return ret;
diff --git a/src/tests/broken_conf.phpt b/src/tests/broken_conf.phpt
index ae0ef6e..9b461bb 100644
--- a/src/tests/broken_conf.phpt
+++ b/src/tests/broken_conf.phpt
@@ -6,5 +6,5 @@ Broken configuration
6sp.configuration_file={PWD}/config/broken_conf.ini 6sp.configuration_file={PWD}/config/broken_conf.ini
7--FILE-- 7--FILE--
8--EXPECT-- 8--EXPECT--
9[snuffleupagus][0.0.0.0][config][error] Invalid configuration prefix for 'this is a broken line'. 9[snuffleupagus][0.0.0.0][config][error] Invalid configuration prefix for 'this is a broken line' on line 1.
10 10
diff --git a/src/tests/broken_conf2.phpt b/src/tests/broken_conf2.phpt
index 88a2232..da9ac95 100644
--- a/src/tests/broken_conf2.phpt
+++ b/src/tests/broken_conf2.phpt
@@ -6,4 +6,4 @@ Broken configuration
6sp.configuration_file={PWD}/config/broken_conf2.ini 6sp.configuration_file={PWD}/config/broken_conf2.ini
7--FILE-- 7--FILE--
8--EXPECT-- 8--EXPECT--
9[snuffleupagus][0.0.0.0][config][error] Invalid configuration section 'sp.wrong'. 9[snuffleupagus][0.0.0.0][config][error] Invalid configuration section 'sp.wrong' on line 1.
diff --git a/src/tests/broken_conf_config_regexp.phpt b/src/tests/broken_conf_config_regexp.phpt
index 75bc603..d2a379e 100644
--- a/src/tests/broken_conf_config_regexp.phpt
+++ b/src/tests/broken_conf_config_regexp.phpt
@@ -6,5 +6,5 @@ Broken configuration
6sp.configuration_file={PWD}/config/broken_config_regexp.ini 6sp.configuration_file={PWD}/config/broken_config_regexp.ini
7--FILE-- 7--FILE--
8--EXPECT-- 8--EXPECT--
9[snuffleupagus][0.0.0.0][config][error] Failed to compile '*.': nothing to repeat. 9[snuffleupagus][0.0.0.0][config][error] Failed to compile '*.': nothing to repeat on line 1.
10[snuffleupagus][0.0.0.0][config][error] '.filename_r()' is expecting a valid regexp, and not '"*."'. 10[snuffleupagus][0.0.0.0][config][error] '.filename_r()' is expecting a valid regexp, and not '"*."' on line 1.
diff --git a/src/tests/broken_conf_enable_disable.phpt b/src/tests/broken_conf_enable_disable.phpt
index 2f3fe19..5d860b9 100644
--- a/src/tests/broken_conf_enable_disable.phpt
+++ b/src/tests/broken_conf_enable_disable.phpt
@@ -6,4 +6,4 @@ Global strict mode
6sp.configuration_file={PWD}/config/borken_conf_enable_disable.ini 6sp.configuration_file={PWD}/config/borken_conf_enable_disable.ini
7--FILE-- 7--FILE--
8--EXPECTF-- 8--EXPECTF--
9[snuffleupagus][0.0.0.0][config][error] A rule can't be enabled and disabled. 9[snuffleupagus][0.0.0.0][config][error] A rule can't be enabled and disabled on line 1.
diff --git a/src/tests/broken_conf_expecting_bool.phpt b/src/tests/broken_conf_expecting_bool.phpt
index 80e1b61..a6aceb2 100644
--- a/src/tests/broken_conf_expecting_bool.phpt
+++ b/src/tests/broken_conf_expecting_bool.phpt
@@ -6,4 +6,4 @@ Bad boolean value in configuration
6sp.configuration_file={PWD}/config/broken_conf_expecting_bool.ini 6sp.configuration_file={PWD}/config/broken_conf_expecting_bool.ini
7--FILE-- 7--FILE--
8--EXPECT-- 8--EXPECT--
9[snuffleupagus][0.0.0.0][config][error] Trailing chars '337);' at the end of '.enable(1337);'. 9[snuffleupagus][0.0.0.0][config][error] Trailing chars '337);' at the end of '.enable(1337);' on line 5.
diff --git a/src/tests/broken_conf_expecting_int.phpt b/src/tests/broken_conf_expecting_int.phpt
index e806337..207e21a 100644
--- a/src/tests/broken_conf_expecting_int.phpt
+++ b/src/tests/broken_conf_expecting_int.phpt
@@ -6,4 +6,4 @@ Bad integer value in configuration
6sp.configuration_file={PWD}/config/broken_conf_expecting_int.ini 6sp.configuration_file={PWD}/config/broken_conf_expecting_int.ini
7--FILE-- 7--FILE--
8--EXPECT-- 8--EXPECT--
9[snuffleupagus][0.0.0.0][error][error] .mask_ipv4() is expecting a valid integer. 9[snuffleupagus][0.0.0.0][error][error] .mask_ipv4() is expecting a valid integer on line 2.
diff --git a/src/tests/broken_conf_invalid_cidr_value.phpt b/src/tests/broken_conf_invalid_cidr_value.phpt
index 712f123..876e9a0 100644
--- a/src/tests/broken_conf_invalid_cidr_value.phpt
+++ b/src/tests/broken_conf_invalid_cidr_value.phpt
@@ -7,5 +7,5 @@ Broken configuration, invalid cidr value
7sp.configuration_file={PWD}/config/broken_conf_invalid_cidr_value.ini 7sp.configuration_file={PWD}/config/broken_conf_invalid_cidr_value.ini
8--FILE-- 8--FILE--
9--EXPECT-- 9--EXPECT--
10[snuffleupagus][0.0.0.0][error][error] There is an issue with the parsing of '"': it doesn't look like a valid string. 10[snuffleupagus][0.0.0.0][error][error] There is an issue with the parsing of '"': it doesn't look like a valid string on line 1.
11[snuffleupagus][0.0.0.0][config][error] " doesn't contain a valid cidr. 11[snuffleupagus][0.0.0.0][config][error] " doesn't contain a valid cidr on line 1.
diff --git a/src/tests/broken_conf_invalid_type.phpt b/src/tests/broken_conf_invalid_type.phpt
index 29d2ff5..246492f 100644
--- a/src/tests/broken_conf_invalid_type.phpt
+++ b/src/tests/broken_conf_invalid_type.phpt
@@ -6,4 +6,4 @@ Broken conf with wrong type
6sp.configuration_file={PWD}/config/broken_conf_invalid_type.ini 6sp.configuration_file={PWD}/config/broken_conf_invalid_type.ini
7--FILE-- 7--FILE--
8--EXPECTF-- 8--EXPECTF--
9[snuffleupagus][0.0.0.0][error][error] There is an issue with the parsing of '"totally_wrong"_type")': it doesn't look like a valid string. 9[snuffleupagus][0.0.0.0][error][error] There is an issue with the parsing of '"totally_wrong"_type")': it doesn't look like a valid string on line 1.
diff --git a/src/tests/broken_conf_line_empty_string.phpt b/src/tests/broken_conf_line_empty_string.phpt
index c4334b9..ba8f9ca 100644
--- a/src/tests/broken_conf_line_empty_string.phpt
+++ b/src/tests/broken_conf_line_empty_string.phpt
@@ -6,4 +6,4 @@ Configuration line with an empty string
6sp.configuration_file={PWD}/config/broken_conf_line_empty_string.ini 6sp.configuration_file={PWD}/config/broken_conf_line_empty_string.ini
7--FILE-- 7--FILE--
8--EXPECT-- 8--EXPECT--
9[snuffleupagus][0.0.0.0][error][error] There is an issue with the parsing of '': it doesn't look like a valid string. 9[snuffleupagus][0.0.0.0][error][error] There is an issue with the parsing of '': it doesn't look like a valid string on line 1.
diff --git a/src/tests/broken_conf_line_no_closing.phpt b/src/tests/broken_conf_line_no_closing.phpt
index 07c94e4..13e3aa1 100644
--- a/src/tests/broken_conf_line_no_closing.phpt
+++ b/src/tests/broken_conf_line_no_closing.phpt
@@ -6,4 +6,4 @@ Configuration line without closing parenthese
6sp.configuration_file={PWD}/config/broken_conf_line_no_closing.ini 6sp.configuration_file={PWD}/config/broken_conf_line_no_closing.ini
7--FILE-- 7--FILE--
8--EXPECT-- 8--EXPECT--
9[snuffleupagus][0.0.0.0][error][error] There is an issue with the parsing of '"123"': it doesn't look like a valid string. 9[snuffleupagus][0.0.0.0][error][error] There is an issue with the parsing of '"123"': it doesn't look like a valid string on line 1.
diff --git a/src/tests/broken_conf_line_too_long.phpt b/src/tests/broken_conf_line_too_long.phpt
index 8e82708..c4e3938 100644
--- a/src/tests/broken_conf_line_too_long.phpt
+++ b/src/tests/broken_conf_line_too_long.phpt
@@ -6,5 +6,5 @@ Line too long in configuration
6sp.configuration_file={PWD}/config/broken_conf_line_too_long.ini 6sp.configuration_file={PWD}/config/broken_conf_line_too_long.ini
7--FILE-- 7--FILE--
8--EXPECT-- 8--EXPECT--
9[snuffleupagus][0.0.0.0][config][error] The following line is too long: 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111);. 9[snuffleupagus][0.0.0.0][config][error] The following line is too long: 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111); on line 1.
10[snuffleupagus][0.0.0.0][error][error] .mask_ipv4() is expecting a valid integer. 10[snuffleupagus][0.0.0.0][error][error] .mask_ipv4() is expecting a valid integer on line 1.
diff --git a/src/tests/broken_conf_lots_of_quotes.phpt b/src/tests/broken_conf_lots_of_quotes.phpt
index e877cfa..bad4a35 100644
--- a/src/tests/broken_conf_lots_of_quotes.phpt
+++ b/src/tests/broken_conf_lots_of_quotes.phpt
@@ -6,4 +6,4 @@ Configuration line with too many quotes
6sp.configuration_file={PWD}/config/broken_conf_lots_of_quotes.ini 6sp.configuration_file={PWD}/config/broken_conf_lots_of_quotes.ini
7--FILE-- 7--FILE--
8--EXPECT-- 8--EXPECT--
9[snuffleupagus][0.0.0.0][error][error] There is an issue with the parsing of '"this\"is a weird\"\"\"cookie\"name"");': it doesn't look like a valid string. 9[snuffleupagus][0.0.0.0][error][error] There is an issue with the parsing of '"this\"is a weird\"\"\"cookie\"name"");': it doesn't look like a valid string on line 1.
diff --git a/src/tests/broken_conf_mutually_exclusive.phpt b/src/tests/broken_conf_mutually_exclusive.phpt
index 9de7e5a..7bfd313 100644
--- a/src/tests/broken_conf_mutually_exclusive.phpt
+++ b/src/tests/broken_conf_mutually_exclusive.phpt
@@ -6,4 +6,4 @@ Broken configuration
6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive.ini 6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive.ini
7--FILE-- 7--FILE--
8--EXPECT-- 8--EXPECT--
9[snuffleupagus][0.0.0.0][config][error] Invalid configuration line: 'sp.disabled_functions.function("system").param("id").value("42").value_r("^id$").drop();':'.value' and '.regexp' are mutually exclusives. \ No newline at end of file 9[snuffleupagus][0.0.0.0][config][error] Invalid configuration line: 'sp.disabled_functions.function("system").param("id").value("42").value_r("^id$").drop();':'.value' and '.regexp' are mutually exclusives on line 1. \ No newline at end of file
diff --git a/src/tests/broken_conf_mutually_exclusive2.phpt b/src/tests/broken_conf_mutually_exclusive2.phpt
index 9d3ea36..cfbf13a 100644
--- a/src/tests/broken_conf_mutually_exclusive2.phpt
+++ b/src/tests/broken_conf_mutually_exclusive2.phpt
@@ -6,4 +6,4 @@ Broken configuration
6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive2.ini 6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive2.ini
7--FILE-- 7--FILE--
8--EXPECT-- 8--EXPECT--
9[snuffleupagus][0.0.0.0][config][error] Invalid configuration line: 'sp.disabled_functions.function("system").function_r("system").param("id").value("42").drop();': '.r_function' and '.function' are mutually exclusive. \ No newline at end of file 9[snuffleupagus][0.0.0.0][config][error] Invalid configuration line: 'sp.disabled_functions.function("system").function_r("system").param("id").value("42").drop();': '.r_function' and '.function' are mutually exclusive on line 1. \ No newline at end of file
diff --git a/src/tests/broken_conf_mutually_exclusive3.phpt b/src/tests/broken_conf_mutually_exclusive3.phpt
index 58686a3..3be561c 100644
--- a/src/tests/broken_conf_mutually_exclusive3.phpt
+++ b/src/tests/broken_conf_mutually_exclusive3.phpt
@@ -6,4 +6,4 @@ Broken configuration
6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive3.ini 6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive3.ini
7--FILE-- 7--FILE--
8--EXPECT-- 8--EXPECT--
9[snuffleupagus][0.0.0.0][config][error] Invalid configuration line: 'sp.disabled_functions.function("system").param("id").value("42").filename_r("^id$").filename("pouet.txt").drop();':'.r_filename' and '.filename' are mutually exclusive. \ No newline at end of file 9[snuffleupagus][0.0.0.0][config][error] Invalid configuration line: 'sp.disabled_functions.function("system").param("id").value("42").filename_r("^id$").filename("pouet.txt").drop();':'.r_filename' and '.filename' are mutually exclusive on line 1. \ No newline at end of file
diff --git a/src/tests/broken_conf_mutually_exclusive4.phpt b/src/tests/broken_conf_mutually_exclusive4.phpt
index d854380..4e888f5 100644
--- a/src/tests/broken_conf_mutually_exclusive4.phpt
+++ b/src/tests/broken_conf_mutually_exclusive4.phpt
@@ -6,4 +6,4 @@ Broken configuration
6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive4.ini 6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive4.ini
7--FILE-- 7--FILE--
8--EXPECT-- 8--EXPECT--
9[snuffleupagus][0.0.0.0][config][error] Invalid configuration line: 'sp.disabled_functions.function("system").param("id").value("42").param_r("^id$").drop();':'.r_param' and '.param' are mutually exclusive. \ No newline at end of file 9[snuffleupagus][0.0.0.0][config][error] Invalid configuration line: 'sp.disabled_functions.function("system").param("id").value("42").param_r("^id$").drop();':'.r_param' and '.param' are mutually exclusive on line 1. \ No newline at end of file
diff --git a/src/tests/broken_conf_mutually_exclusive5.phpt b/src/tests/broken_conf_mutually_exclusive5.phpt
index a265c30..9ebc930 100644
--- a/src/tests/broken_conf_mutually_exclusive5.phpt
+++ b/src/tests/broken_conf_mutually_exclusive5.phpt
@@ -6,4 +6,4 @@ Broken configuration
6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive5.ini 6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive5.ini
7--FILE-- 7--FILE--
8--EXPECT-- 8--EXPECT--
9[snuffleupagus][0.0.0.0][config][error] Invalid configuration line: 'sp.disabled_functions.function("system").ret("0").drop().ret_r("^0$");':'.r_ret' and '.ret' are mutually exclusive. \ No newline at end of file 9[snuffleupagus][0.0.0.0][config][error] Invalid configuration line: 'sp.disabled_functions.function("system").ret("0").drop().ret_r("^0$");':'.r_ret' and '.ret' are mutually exclusive on line 1. \ No newline at end of file
diff --git a/src/tests/broken_conf_mutually_exclusive6.phpt b/src/tests/broken_conf_mutually_exclusive6.phpt
index d0cdb85..4c8cf72 100644
--- a/src/tests/broken_conf_mutually_exclusive6.phpt
+++ b/src/tests/broken_conf_mutually_exclusive6.phpt
@@ -6,4 +6,4 @@ Broken configuration
6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive6.ini 6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive6.ini
7--FILE-- 7--FILE--
8--EXPECT-- 8--EXPECT--
9[snuffleupagus][0.0.0.0][config][error] Invalid configuration line: 'sp.disabled_functions.function("system").param("id").value("42").ret_r("^0$").drop();':`ret` and `param` are mutually exclusives. \ No newline at end of file 9[snuffleupagus][0.0.0.0][config][error] Invalid configuration line: 'sp.disabled_functions.function("system").param("id").value("42").ret_r("^0$").drop();':`ret` and `param` are mutually exclusive on line 1. \ No newline at end of file
diff --git a/src/tests/broken_conf_mutually_exclusive7.phpt b/src/tests/broken_conf_mutually_exclusive7.phpt
index c9a3513..419cfd4 100644
--- a/src/tests/broken_conf_mutually_exclusive7.phpt
+++ b/src/tests/broken_conf_mutually_exclusive7.phpt
@@ -6,4 +6,4 @@ Broken configuration
6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive7.ini 6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive7.ini
7--FILE-- 7--FILE--
8--EXPECT-- 8--EXPECT--
9[snuffleupagus][0.0.0.0][config][error] Invalid configuration line: 'sp.disabled_functions.function("system").ret("0").drop().allow();': The rule must either be a `drop` or and `allow` one. \ No newline at end of file 9[snuffleupagus][0.0.0.0][config][error] Invalid configuration line: 'sp.disabled_functions.function("system").ret("0").drop().allow();': The rule must either be a `drop` or and `allow` one on line 1. \ No newline at end of file
diff --git a/src/tests/broken_conf_mutually_exclusive8.phpt b/src/tests/broken_conf_mutually_exclusive8.phpt
index 7c5baee..f7bf341 100644
--- a/src/tests/broken_conf_mutually_exclusive8.phpt
+++ b/src/tests/broken_conf_mutually_exclusive8.phpt
@@ -6,4 +6,4 @@ Broken configuration
6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive8.ini 6sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive8.ini
7--FILE-- 7--FILE--
8--EXPECT-- 8--EXPECT--
9[snuffleupagus][0.0.0.0][config][error] Invalid configuration line: 'sp.disabled_functions.ret("0").drop();': must take a function name. \ No newline at end of file 9[snuffleupagus][0.0.0.0][config][error] Invalid configuration line: 'sp.disabled_functions.ret("0").drop();': must take a function name on line 1. \ No newline at end of file
diff --git a/src/tests/broken_conf_no_closing_misc.phpt b/src/tests/broken_conf_no_closing_misc.phpt
index 1d1e112..933f290 100644
--- a/src/tests/broken_conf_no_closing_misc.phpt
+++ b/src/tests/broken_conf_no_closing_misc.phpt
@@ -6,5 +6,5 @@ Configuration line without closing parenthese, misc
6sp.configuration_file={PWD}/config/broken_conf_no_closing_misc.ini 6sp.configuration_file={PWD}/config/broken_conf_no_closing_misc.ini
7--FILE-- 7--FILE--
8--EXPECT-- 8--EXPECT--
9[snuffleupagus][0.0.0.0][config][error] Missing closing ) in line 123. 9[snuffleupagus][0.0.0.0][config][error] Missing closing ) in line 123 on line 1.
10[snuffleupagus][0.0.0.0][error][error] .mask_ipv4() is expecting a valid integer. 10[snuffleupagus][0.0.0.0][error][error] .mask_ipv4() is expecting a valid integer on line 1.
diff --git a/src/tests/broken_conf_weird_keyword.phpt b/src/tests/broken_conf_weird_keyword.phpt
index 5293791..17de7fe 100644
--- a/src/tests/broken_conf_weird_keyword.phpt
+++ b/src/tests/broken_conf_weird_keyword.phpt
@@ -6,4 +6,4 @@ Bad config, unknown keyword
6sp.configuration_file={PWD}/config/broken_conf_weird_keyword.ini 6sp.configuration_file={PWD}/config/broken_conf_weird_keyword.ini
7--FILE-- 7--FILE--
8--EXPECT-- 8--EXPECT--
9[snuffleupagus][0.0.0.0][config][error] Trailing chars '.not_a_valid_keyword("test");' at the end of '.enable().not_a_valid_keyword("test");'. \ No newline at end of file 9[snuffleupagus][0.0.0.0][config][error] Trailing chars '.not_a_valid_keyword("test");' at the end of '.enable().not_a_valid_keyword("test");' on line 1. \ No newline at end of file
diff --git a/src/tests/broken_conf_wrong_quotes.phpt b/src/tests/broken_conf_wrong_quotes.phpt
index b6324fe..00aaefb 100644
--- a/src/tests/broken_conf_wrong_quotes.phpt
+++ b/src/tests/broken_conf_wrong_quotes.phpt
@@ -6,4 +6,4 @@ Configuration line with too many quotes
6sp.configuration_file={PWD}/config/broken_conf_wrong_quotes.ini 6sp.configuration_file={PWD}/config/broken_conf_wrong_quotes.ini
7--FILE-- 7--FILE--
8--EXPECT-- 8--EXPECT--
9[snuffleupagus][0.0.0.0][error][error] There is an issue with the parsing of '"\)': it doesn't look like a valid string. 9[snuffleupagus][0.0.0.0][error][error] There is an issue with the parsing of '"\)': it doesn't look like a valid string on line 1.
diff --git a/src/tests/broken_conf_wrong_type.phpt b/src/tests/broken_conf_wrong_type.phpt
index 338ca3a..765c576 100644
--- a/src/tests/broken_conf_wrong_type.phpt
+++ b/src/tests/broken_conf_wrong_type.phpt
@@ -6,4 +6,4 @@ Broken conf with wrong type
6sp.configuration_file={PWD}/config/broken_conf_wrong_type.ini 6sp.configuration_file={PWD}/config/broken_conf_wrong_type.ini
7--FILE-- 7--FILE--
8--EXPECTF-- 8--EXPECTF--
9[snuffleupagus][0.0.0.0][error][error] .ret_type() is expecting a valid php type ('false', 'true', 'array'. 'object', 'long', 'double', 'null', 'resource', 'reference', 'undef'). 9[snuffleupagus][0.0.0.0][error][error] .ret_type() is expecting a valid php type ('false', 'true', 'array'. 'object', 'long', 'double', 'null', 'resource', 'reference', 'undef') on line 5.
diff --git a/src/tests/broken_regexp.phpt b/src/tests/broken_regexp.phpt
index cbfef7d..3367997 100644
--- a/src/tests/broken_regexp.phpt
+++ b/src/tests/broken_regexp.phpt
@@ -6,4 +6,4 @@ Broken regexp
6sp.configuration_file={PWD}/config/broken_regexp.ini 6sp.configuration_file={PWD}/config/broken_regexp.ini
7--FILE-- 7--FILE--
8--EXPECTF-- 8--EXPECTF--
9[snuffleupagus][0.0.0.0][config][error] '.value_r()' is expecting a valid regexp, and not '"^$["'. 9[snuffleupagus][0.0.0.0][config][error] '.value_r()' is expecting a valid regexp, and not '"^$["' on line 1.