From fe43991e3dc6c46e2781d21369f5e268de7baef9 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Tue, 10 Oct 2017 18:11:31 +0200 Subject: Implement match on arguments position --- src/tests/config/disabled_functions_pos.ini | 1 + src/tests/disabled_functions_param_pos.phpt | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 src/tests/config/disabled_functions_pos.ini create mode 100644 src/tests/disabled_functions_param_pos.phpt (limited to 'src/tests') diff --git a/src/tests/config/disabled_functions_pos.ini b/src/tests/config/disabled_functions_pos.ini new file mode 100644 index 0000000..81a524e --- /dev/null +++ b/src/tests/config/disabled_functions_pos.ini @@ -0,0 +1 @@ +sp.disable_functions.function("system").pos("0").value("id").drop(); diff --git a/src/tests/disabled_functions_param_pos.phpt b/src/tests/disabled_functions_param_pos.phpt new file mode 100644 index 0000000..de578b2 --- /dev/null +++ b/src/tests/disabled_functions_param_pos.phpt @@ -0,0 +1,12 @@ +--TEST-- +Disable functions - match on argument's position +--SKIPIF-- + +--INI-- +sp.configuration_file={PWD}/config/disabled_functions_pos.ini +--FILE-- + +--EXPECTF-- +[snuffleupagus][0.0.0.0][disabled_function][drop] The call to the function 'system' in %a/disabled_functions_param_pos.php:%d has been disabled, because its argument 'command' content (id) matched a rule. -- cgit v1.3 From 1e73d00ffaf4cadcaadcd7fae3b3be99305fb439 Mon Sep 17 00:00:00 2001 From: bui Date: Tue, 17 Oct 2017 18:30:39 +0200 Subject: extra tests --- src/tests/config/disabled_functions_invalid_pos.ini | 1 + src/tests/disabled_functions_param_invalid_pos.phpt | 14 ++++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 src/tests/config/disabled_functions_invalid_pos.ini create mode 100644 src/tests/disabled_functions_param_invalid_pos.phpt (limited to 'src/tests') diff --git a/src/tests/config/disabled_functions_invalid_pos.ini b/src/tests/config/disabled_functions_invalid_pos.ini new file mode 100644 index 0000000..5ba3af3 --- /dev/null +++ b/src/tests/config/disabled_functions_invalid_pos.ini @@ -0,0 +1 @@ +sp.disable_functions.function("system").pos("qwe").value("id").drop(); diff --git a/src/tests/disabled_functions_param_invalid_pos.phpt b/src/tests/disabled_functions_param_invalid_pos.phpt new file mode 100644 index 0000000..91ddd93 --- /dev/null +++ b/src/tests/disabled_functions_param_invalid_pos.phpt @@ -0,0 +1,14 @@ +--TEST-- +Disable functions - match on argument's position +--SKIPIF-- + +--INI-- +sp.configuration_file={PWD}/config/disabled_functions_invalid_pos.ini +--FILE-- + +--EXPECTF-- +[snuffleupagus][0.0.0.0][config][error] Failed to parse arg 'qwe' of `pos` on line 1. +1 + -- cgit v1.3 From 76dc2f2d18abadafcb76aa5cae37ec9a73081d32 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Wed, 18 Oct 2017 15:30:27 +0200 Subject: Fix the tests --- src/tests/config/disabled_functions_invalid_pos.ini | 2 +- src/tests/config/disabled_functions_pos.ini | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src/tests') diff --git a/src/tests/config/disabled_functions_invalid_pos.ini b/src/tests/config/disabled_functions_invalid_pos.ini index 5ba3af3..42988e4 100644 --- a/src/tests/config/disabled_functions_invalid_pos.ini +++ b/src/tests/config/disabled_functions_invalid_pos.ini @@ -1 +1 @@ -sp.disable_functions.function("system").pos("qwe").value("id").drop(); +sp.disable_function.function("system").pos("qwe").value("id").drop(); diff --git a/src/tests/config/disabled_functions_pos.ini b/src/tests/config/disabled_functions_pos.ini index 81a524e..f96cf3d 100644 --- a/src/tests/config/disabled_functions_pos.ini +++ b/src/tests/config/disabled_functions_pos.ini @@ -1 +1 @@ -sp.disable_functions.function("system").pos("0").value("id").drop(); +sp.disable_function.function("system").pos("0").value("id").drop(); -- cgit v1.3 From 066b79abe9943821240ccc3a458e8ba45b9ee9e8 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Wed, 18 Oct 2017 17:04:44 +0200 Subject: `.pos` is mutuaally exclusive with .param and .paran_r --- src/sp_config_keywords.c | 4 ++-- src/tests/broken_conf_mutually_exclusive4.phpt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src/tests') diff --git a/src/sp_config_keywords.c b/src/sp_config_keywords.c index b03c28e..097d08b 100644 --- a/src/sp_config_keywords.c +++ b/src/sp_config_keywords.c @@ -204,10 +204,10 @@ int parse_disabled_functions(char *line) { "'.r_filename' and '.filename' are mutually exclusive on line %zu.", line, sp_line_no); return -1; - } else if (df->r_param && df->param) { + } else if (1 < ((df->r_param?1:0) + (df->param?1:0) + ((-1 != df->pos)?1:0))) { sp_log_err("config", "Invalid configuration line: 'sp.disabled_functions%s':" - "'.r_param' and '.param' are mutually exclusive on line %zu.", + "'.r_param', '.param' and '.pos' are mutually exclusive on line %zu.", line, sp_line_no); return -1; } else if (df->r_ret && df->ret) { diff --git a/src/tests/broken_conf_mutually_exclusive4.phpt b/src/tests/broken_conf_mutually_exclusive4.phpt index 4e888f5..a60f3fa 100644 --- a/src/tests/broken_conf_mutually_exclusive4.phpt +++ b/src/tests/broken_conf_mutually_exclusive4.phpt @@ -6,4 +6,4 @@ Broken configuration sp.configuration_file={PWD}/config/broken_conf_mutually_exclusive4.ini --FILE-- --EXPECT-- -[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 +[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', '.param' and '.pos' are mutually exclusive on line 1. -- cgit v1.3