summaryrefslogtreecommitdiff
path: root/src/sp_disabled_functions.c
diff options
context:
space:
mode:
authorjvoisin2018-01-18 10:38:50 +0100
committerjvoisin2018-01-18 10:38:50 +0100
commitf99a8cfbb711756a2c6520a52768f49d9a4380c4 (patch)
tree92470277e9a79cb769ec749ad09db7804c9006b4 /src/sp_disabled_functions.c
parente2b74815a4bdb8fde177d4dce2e3aa1ba3792617 (diff)
Improve the way we're dealing with filtering on parameter positions
This should close #127
Diffstat (limited to 'src/sp_disabled_functions.c')
-rw-r--r--src/sp_disabled_functions.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/sp_disabled_functions.c b/src/sp_disabled_functions.c
index f5051df..933b9af 100644
--- a/src/sp_disabled_functions.c
+++ b/src/sp_disabled_functions.c
@@ -117,12 +117,12 @@ static bool is_param_matching(zend_execute_data* execute_data,
117 const char* builtin_param, const char** arg_name, 117 const char* builtin_param, const char** arg_name,
118 const char* builtin_param_name, 118 const char* builtin_param_name,
119 const char** arg_value_str) { 119 const char** arg_value_str) {
120 int nb_param = execute_data->func->common.num_args; 120 int nb_param = ZEND_CALL_NUM_ARGS(execute_data);
121 int i = 0; 121 int i = 0;
122 zval* arg_value; 122 zval* arg_value;
123 123
124 if (config_node->pos != -1) { 124 if (config_node->pos != -1) {
125 if (config_node->pos <= nb_param) { 125 if (config_node->pos > nb_param - 1) {
126 char* complete_function_path = get_complete_function_path(execute_data); 126 char* complete_function_path = get_complete_function_path(execute_data);
127 sp_log_err("config", 127 sp_log_err("config",
128 "It seems that you wrote a rule filtering on the " 128 "It seems that you wrote a rule filtering on the "
@@ -160,7 +160,7 @@ static bool is_param_matching(zend_execute_data* execute_data,
160 160
161 /* This is the parameter name we're looking for. */ 161 /* This is the parameter name we're looking for. */
162 if (true == pcre_matching || config_node->pos != -1) { 162 if (true == pcre_matching || config_node->pos != -1) {
163 arg_value = ZEND_CALL_VAR_NUM(execute_data, i); 163 arg_value = ZEND_CALL_ARG(execute_data, i + 1);
164 164
165 if (config_node->param_type) { // Are we matching on the `type`? 165 if (config_node->param_type) { // Are we matching on the `type`?
166 if (config_node->param_type == Z_TYPE_P(arg_value)) { 166 if (config_node->param_type == Z_TYPE_P(arg_value)) {