summaryrefslogtreecommitdiff
path: root/src/sp_config.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.c
parent6abdd9abca50c92390b94fbebb3e7065d5d532da (diff)
Add whitelist support for php's wrappers
Diffstat (limited to 'src/sp_config.c')
-rw-r--r--src/sp_config.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/sp_config.c b/src/sp_config.c
index c652984..e5cb3ce 100644
--- a/src/sp_config.c
+++ b/src/sp_config.c
@@ -23,6 +23,7 @@ sp_config_tokens const sp_func[] = {
23 {.func = parse_eval_whitelist, .token = SP_TOKEN_EVAL_WHITELIST}, 23 {.func = parse_eval_whitelist, .token = SP_TOKEN_EVAL_WHITELIST},
24 {.func = parse_session, .token = SP_TOKEN_SESSION_ENCRYPTION}, 24 {.func = parse_session, .token = SP_TOKEN_SESSION_ENCRYPTION},
25 {.func = parse_sloppy_comparison, .token = SP_TOKEN_SLOPPY_COMPARISON}, 25 {.func = parse_sloppy_comparison, .token = SP_TOKEN_SLOPPY_COMPARISON},
26 {.func = parse_wrapper_whitelist, .token = SP_TOKEN_ALLOW_WRAPPERS},
26 {NULL, NULL}}; 27 {NULL, NULL}};
27 28
28/* Top level keyword parsing */ 29/* Top level keyword parsing */
@@ -61,6 +62,26 @@ int parse_empty(char *restrict line, char *restrict keyword, void *retval) {
61 return 0; 62 return 0;
62} 63}
63 64
65int parse_list(char *restrict line, char *restrict keyword, void *list_ptr) {
66 zend_string *value = NULL;
67 sp_list_node **list = list_ptr;
68 char *token, *tmp;
69
70 size_t consumed = 0;
71 value = get_param(&consumed, line, SP_TYPE_STR, keyword);
72 if (!value) {
73 return -1;
74 }
75
76 tmp = ZSTR_VAL(value);
77 while ((token = strtok_r(tmp, ",", &tmp))) {
78 *list = sp_list_insert(*list, zend_string_init(token, strlen(token), 1));
79 }
80
81 pefree(value, 1);
82 return consumed;
83}
84
64int parse_php_type(char *restrict line, char *restrict keyword, void *retval) { 85int parse_php_type(char *restrict line, char *restrict keyword, void *retval) {
65 size_t consumed = 0; 86 size_t consumed = 0;
66 zend_string *value = get_param(&consumed, line, SP_TYPE_STR, keyword); 87 zend_string *value = get_param(&consumed, line, SP_TYPE_STR, keyword);