diff options
Diffstat (limited to 'src/sp_config.c')
| -rw-r--r-- | src/sp_config.c | 21 |
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 | ||
| 65 | int 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 | |||
| 64 | int parse_php_type(char *restrict line, char *restrict keyword, void *retval) { | 85 | int 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); |
