summaryrefslogtreecommitdiff
path: root/src/sp_config_keywords.c
diff options
context:
space:
mode:
authorxXx-caillou-xXx2018-08-27 13:56:44 +0200
committerjvoisin2018-08-27 11:56:44 +0000
commit096e7faa6a5e21e5416a7c8c484e27acd4636a66 (patch)
tree3dd11a05c4406280238459be917b8f47d22400f7 /src/sp_config_keywords.c
parent6abdd9abca50c92390b94fbebb3e7065d5d532da (diff)
Add whitelist support for php's wrappers
Diffstat (limited to 'src/sp_config_keywords.c')
-rw-r--r--src/sp_config_keywords.c20
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
168static int parse_eval_filter_conf(char *line, sp_list_node **list) { 168static 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
192int 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
197int parse_eval_blacklist(char *line) { 205int 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);