From 096e7faa6a5e21e5416a7c8c484e27acd4636a66 Mon Sep 17 00:00:00 2001 From: xXx-caillou-xXx Date: Mon, 27 Aug 2018 13:56:44 +0200 Subject: Add whitelist support for php's wrappers --- src/sp_config.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/sp_config.c') 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[] = { {.func = parse_eval_whitelist, .token = SP_TOKEN_EVAL_WHITELIST}, {.func = parse_session, .token = SP_TOKEN_SESSION_ENCRYPTION}, {.func = parse_sloppy_comparison, .token = SP_TOKEN_SLOPPY_COMPARISON}, + {.func = parse_wrapper_whitelist, .token = SP_TOKEN_ALLOW_WRAPPERS}, {NULL, NULL}}; /* Top level keyword parsing */ @@ -61,6 +62,26 @@ int parse_empty(char *restrict line, char *restrict keyword, void *retval) { return 0; } +int parse_list(char *restrict line, char *restrict keyword, void *list_ptr) { + zend_string *value = NULL; + sp_list_node **list = list_ptr; + char *token, *tmp; + + size_t consumed = 0; + value = get_param(&consumed, line, SP_TYPE_STR, keyword); + if (!value) { + return -1; + } + + tmp = ZSTR_VAL(value); + while ((token = strtok_r(tmp, ",", &tmp))) { + *list = sp_list_insert(*list, zend_string_init(token, strlen(token), 1)); + } + + pefree(value, 1); + return consumed; +} + int parse_php_type(char *restrict line, char *restrict keyword, void *retval) { size_t consumed = 0; zend_string *value = get_param(&consumed, line, SP_TYPE_STR, keyword); -- cgit v1.3