diff options
| author | Ben Fuhrmannek | 2021-08-10 16:45:40 +0200 |
|---|---|---|
| committer | Ben Fuhrmannek | 2021-08-10 16:45:40 +0200 |
| commit | f3d5d251875ee7f854a3df38709eedef4c6d1a31 (patch) | |
| tree | d8e60b9a94e51bffdac913ed96380a41fb272bdf | |
| parent | dce966ffec7dfdae2b701d581d71df6a5a542db9 (diff) | |
prevent option to be enabled and then disabled
4 files changed, 32 insertions, 1 deletions
diff --git a/src/sp_config_keywords.c b/src/sp_config_keywords.c index b627122..a177a5e 100644 --- a/src/sp_config_keywords.c +++ b/src/sp_config_keywords.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | #include "php_snuffleupagus.h" | 1 | #include "php_snuffleupagus.h" |
| 2 | 2 | ||
| 3 | #define SP_SET_ENABLE_DISABLE(enable, disable, varname) \ | 3 | #define SP_SET_ENABLE_DISABLE(enable, disable, varname) \ |
| 4 | if (enable && disable) { \ | 4 | if (((varname) || enable) && disable) { \ |
| 5 | sp_log_err("config", "A rule can't be enabled and disabled on line %zu", sp_line_no); \ | 5 | sp_log_err("config", "A rule can't be enabled and disabled on line %zu", sp_line_no); \ |
| 6 | return -1; \ | 6 | return -1; \ |
| 7 | } \ | 7 | } \ |
diff --git a/src/tests/broken_configuration/broken_conf_enable_disable2.phpt b/src/tests/broken_configuration/broken_conf_enable_disable2.phpt new file mode 100644 index 0000000..0d6fb8c --- /dev/null +++ b/src/tests/broken_configuration/broken_conf_enable_disable2.phpt | |||
| @@ -0,0 +1,15 @@ | |||
| 1 | --TEST-- | ||
| 2 | Global strict mode | ||
| 3 | --SKIPIF-- | ||
| 4 | <?php if (!extension_loaded("snuffleupagus")) print "skip"; ?> | ||
| 5 | <?php if (PHP_VERSION_ID >= 80000) print "skip"; ?> | ||
| 6 | --INI-- | ||
| 7 | sp.configuration_file={PWD}/../broken_configuration/config/broken_conf_enable_disable2.ini | ||
| 8 | --FILE-- | ||
| 9 | --EXPECTF-- | ||
| 10 | PHP Fatal error: [snuffleupagus][0.0.0.0][config][log] A rule can't be enabled and disabled on line 2 in Unknown on line 0 | ||
| 11 | |||
| 12 | Fatal error: [snuffleupagus][0.0.0.0][config][log] A rule can't be enabled and disabled on line 2 in Unknown on line 0 | ||
| 13 | |||
| 14 | Fatal error: [snuffleupagus][0.0.0.0][config][log] Invalid configuration file in Unknown on line 0 | ||
| 15 | Could not startup. | ||
diff --git a/src/tests/broken_configuration/config/broken_conf_enable_disable2.ini b/src/tests/broken_configuration/config/broken_conf_enable_disable2.ini new file mode 100644 index 0000000..39d97cc --- /dev/null +++ b/src/tests/broken_configuration/config/broken_conf_enable_disable2.ini | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | sp.global_strict.enable(); | ||
| 2 | sp.global_strict.disable(); | ||
diff --git a/src/tests/broken_configuration_php8/broken_conf_enable_disable2.phpt b/src/tests/broken_configuration_php8/broken_conf_enable_disable2.phpt new file mode 100644 index 0000000..efe5538 --- /dev/null +++ b/src/tests/broken_configuration_php8/broken_conf_enable_disable2.phpt | |||
| @@ -0,0 +1,14 @@ | |||
| 1 | --TEST-- | ||
| 2 | Global strict mode | ||
| 3 | --SKIPIF-- | ||
| 4 | <?php if (!extension_loaded("snuffleupagus")) print "skip"; ?> | ||
| 5 | <?php if (PHP_VERSION_ID < 80000) print "skip"; ?> | ||
| 6 | --INI-- | ||
| 7 | sp.configuration_file={PWD}/../broken_configuration/config/broken_conf_enable_disable2.ini | ||
| 8 | --FILE-- | ||
| 9 | --EXPECTF-- | ||
| 10 | |||
| 11 | Fatal error: [snuffleupagus][0.0.0.0][config][log] A rule can't be enabled and disabled on line 2 in Unknown on line 0 | ||
| 12 | |||
| 13 | Fatal error: [snuffleupagus][0.0.0.0][config][log] Invalid configuration file in Unknown on line 0 | ||
| 14 | Could not startup. | ||
