diff options
| author | jvoisin | 2018-03-06 13:44:40 +0100 |
|---|---|---|
| committer | jvoisin | 2018-03-06 13:44:40 +0100 |
| commit | 580f6937ca3d8e3fd6d4d83229a17dcad57395a4 (patch) | |
| tree | a0d9be2e7b169f4db201b6e0049eeaa2846bcfc0 /src/sp_disabled_functions.c | |
| parent | 604761cdc0c2228c48ef394158ee24c3f61bfd3f (diff) | |
Fix a variadic-functions-related crash
Currently, we're not supporting virtual-patching on
variadic functions. The commit makes it clear,
and fix the related crash.
This should close #157
Diffstat (limited to 'src/sp_disabled_functions.c')
| -rw-r--r-- | src/sp_disabled_functions.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/sp_disabled_functions.c b/src/sp_disabled_functions.c index e279e5f..0e05f4e 100644 --- a/src/sp_disabled_functions.c +++ b/src/sp_disabled_functions.c | |||
| @@ -305,9 +305,16 @@ bool should_disable(zend_execute_data* execute_data, const char* builtin_name, | |||
| 305 | /* Check if we filter on parameter value*/ | 305 | /* Check if we filter on parameter value*/ |
| 306 | if (config_node->param || config_node->r_param || | 306 | if (config_node->param || config_node->r_param || |
| 307 | (config_node->pos != -1)) { | 307 | (config_node->pos != -1)) { |
| 308 | if (false == is_param_matching(execute_data, config_node, builtin_name, | 308 | if (!builtin_name && execute_data->func->op_array.arg_info->is_variadic) { |
| 309 | builtin_param, &arg_name, | 309 | sp_log_err( |
| 310 | builtin_param_name, &arg_value_str)) { | 310 | "disable_function", |
| 311 | "Snuffleupagus doesn't support variadic functions yet, sorry. " | ||
| 312 | "Check https://github.com/nbs-system/snuffleupagus/issues/164 for " | ||
| 313 | "details."); | ||
| 314 | } else if (false == is_param_matching(execute_data, config_node, | ||
| 315 | builtin_name, builtin_param, | ||
| 316 | &arg_name, builtin_param_name, | ||
| 317 | &arg_value_str)) { | ||
| 311 | goto next; | 318 | goto next; |
| 312 | } | 319 | } |
| 313 | } | 320 | } |
