diff options
| author | xXx-caillou-xXx | 2018-08-27 13:56:44 +0200 |
|---|---|---|
| committer | jvoisin | 2018-08-27 11:56:44 +0000 |
| commit | 096e7faa6a5e21e5416a7c8c484e27acd4636a66 (patch) | |
| tree | 3dd11a05c4406280238459be917b8f47d22400f7 /src/sp_config_keywords.c | |
| parent | 6abdd9abca50c92390b94fbebb3e7065d5d532da (diff) | |
Add whitelist support for php's wrappers
Diffstat (limited to 'src/sp_config_keywords.c')
| -rw-r--r-- | src/sp_config_keywords.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/sp_config_keywords.c b/src/sp_config_keywords.c index fb20a43..b86b9d9 100644 --- a/src/sp_config_keywords.c +++ b/src/sp_config_keywords.c | |||
| @@ -166,12 +166,11 @@ int parse_global(char *line) { | |||
| 166 | } | 166 | } |
| 167 | 167 | ||
| 168 | static int parse_eval_filter_conf(char *line, sp_list_node **list) { | 168 | static int parse_eval_filter_conf(char *line, sp_list_node **list) { |
| 169 | char *token, *tmp; | ||
| 170 | zend_string *rest = NULL; | 169 | zend_string *rest = NULL; |
| 171 | sp_config_eval *eval = SNUFFLEUPAGUS_G(config).config_eval; | 170 | sp_config_eval *eval = SNUFFLEUPAGUS_G(config).config_eval; |
| 172 | 171 | ||
| 173 | sp_config_functions sp_config_funcs[] = { | 172 | sp_config_functions sp_config_funcs[] = { |
| 174 | {parse_str, SP_TOKEN_EVAL_LIST, &rest}, | 173 | {parse_list, SP_TOKEN_LIST, list}, |
| 175 | {parse_empty, SP_TOKEN_SIMULATION, | 174 | {parse_empty, SP_TOKEN_SIMULATION, |
| 176 | &(SNUFFLEUPAGUS_G(config).config_eval->simulation)}, | 175 | &(SNUFFLEUPAGUS_G(config).config_eval->simulation)}, |
| 177 | {parse_str, SP_TOKEN_DUMP, &(SNUFFLEUPAGUS_G(config).config_eval->dump)}, | 176 | {parse_str, SP_TOKEN_DUMP, &(SNUFFLEUPAGUS_G(config).config_eval->dump)}, |
| @@ -184,16 +183,25 @@ static int parse_eval_filter_conf(char *line, sp_list_node **list) { | |||
| 184 | return ret; | 183 | return ret; |
| 185 | } | 184 | } |
| 186 | 185 | ||
| 187 | tmp = ZSTR_VAL(rest); | ||
| 188 | while ((token = strtok_r(tmp, ",", &tmp))) { | ||
| 189 | *list = sp_list_insert(*list, zend_string_init(token, strlen(token), 1)); | ||
| 190 | } | ||
| 191 | if (rest != NULL) { | 186 | if (rest != NULL) { |
| 192 | pefree(rest, 1); | 187 | pefree(rest, 1); |
| 193 | } | 188 | } |
| 194 | return SUCCESS; | 189 | return SUCCESS; |
| 195 | } | 190 | } |
| 196 | 191 | ||
| 192 | int parse_wrapper_whitelist(char *line) { | ||
| 193 | SNUFFLEUPAGUS_G(config).config_wrapper->enabled = true; | ||
| 194 | sp_config_functions sp_config_funcs[] = { | ||
| 195 | {parse_list, SP_TOKEN_LIST, | ||
| 196 | &SNUFFLEUPAGUS_G(config).config_wrapper->whitelist}, | ||
| 197 | {0}}; | ||
| 198 | int ret = parse_keywords(sp_config_funcs, line); | ||
| 199 | if (0 != ret) { | ||
| 200 | return ret; | ||
| 201 | } | ||
| 202 | return SUCCESS; | ||
| 203 | } | ||
| 204 | |||
| 197 | int parse_eval_blacklist(char *line) { | 205 | int parse_eval_blacklist(char *line) { |
| 198 | return parse_eval_filter_conf( | 206 | return parse_eval_filter_conf( |
| 199 | line, &SNUFFLEUPAGUS_G(config).config_eval->blacklist); | 207 | line, &SNUFFLEUPAGUS_G(config).config_eval->blacklist); |
