diff options
| author | Ben Fuhrmannek | 2021-08-02 10:42:12 +0200 |
|---|---|---|
| committer | Ben Fuhrmannek | 2021-08-02 10:42:12 +0200 |
| commit | 4cda0120313dfd5d71236f6faf87416e93f5f89c (patch) | |
| tree | 0c2c6d15e8ac5287fb3304f96de719547d9e847a /src/sp_config.c | |
| parent | 6c132e6a1d8d339a20282afb5a4af52eb6bce9db (diff) | |
| parent | e62f226c3ed885808c832040872fc2d73ca46dac (diff) | |
Merge branch 'master' of https://github.com/jvoisin/snuffleupagus
Diffstat (limited to 'src/sp_config.c')
| -rw-r--r-- | src/sp_config.c | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/src/sp_config.c b/src/sp_config.c index 69730e3..c12b435 100644 --- a/src/sp_config.c +++ b/src/sp_config.c | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | size_t sp_line_no; | 7 | size_t sp_line_no; |
| 8 | 8 | ||
| 9 | sp_config_tokens const sp_func[] = { | 9 | static sp_config_tokens const sp_func[] = { |
| 10 | {.func = parse_unserialize, .token = SP_TOKEN_UNSERIALIZE_HMAC}, | 10 | {.func = parse_unserialize, .token = SP_TOKEN_UNSERIALIZE_HMAC}, |
| 11 | {.func = parse_random, .token = SP_TOKEN_HARDEN_RANDOM}, | 11 | {.func = parse_random, .token = SP_TOKEN_HARDEN_RANDOM}, |
| 12 | {.func = parse_log_media, .token = SP_TOKEN_LOG_MEDIA}, | 12 | {.func = parse_log_media, .token = SP_TOKEN_LOG_MEDIA}, |
| @@ -73,7 +73,11 @@ int parse_list(char *restrict line, char *restrict keyword, void *list_ptr) { | |||
| 73 | } | 73 | } |
| 74 | 74 | ||
| 75 | tmp = ZSTR_VAL(value); | 75 | tmp = ZSTR_VAL(value); |
| 76 | while ((token = strtok_r(tmp, ",", &tmp))) { | 76 | while (1) { |
| 77 | token = strsep(&tmp, ","); | ||
| 78 | if (token == NULL) { | ||
| 79 | break; | ||
| 80 | } | ||
| 77 | *list = sp_list_insert(*list, zend_string_init(token, strlen(token), 1)); | 81 | *list = sp_list_insert(*list, zend_string_init(token, strlen(token), 1)); |
| 78 | } | 82 | } |
| 79 | 83 | ||
| @@ -216,11 +220,32 @@ void sp_disabled_function_list_free(sp_list_node *list) { | |||
| 216 | sp_list_node *cursor = list; | 220 | sp_list_node *cursor = list; |
| 217 | while (cursor) { | 221 | while (cursor) { |
| 218 | sp_disabled_function *df = cursor->data; | 222 | sp_disabled_function *df = cursor->data; |
| 219 | if (df && df->functions_list) sp_list_free(df->functions_list); | ||
| 220 | if (df) { | 223 | if (df) { |
| 224 | sp_list_free(df->functions_list); | ||
| 225 | sp_list_free(df->param_array_keys); | ||
| 226 | sp_list_free(df->var_array_keys); | ||
| 227 | |||
| 228 | sp_pcre_free(df->r_filename); | ||
| 229 | sp_pcre_free(df->r_function); | ||
| 230 | sp_pcre_free(df->r_param); | ||
| 231 | sp_pcre_free(df->r_ret); | ||
| 232 | sp_pcre_free(df->r_value); | ||
| 233 | sp_pcre_free(df->r_key); | ||
| 234 | |||
| 221 | sp_tree_free(df->param); | 235 | sp_tree_free(df->param); |
| 222 | sp_tree_free(df->var); | 236 | sp_tree_free(df->var); |
| 223 | } | 237 | } |
| 224 | cursor = cursor->next; | 238 | cursor = cursor->next; |
| 225 | } | 239 | } |
| 226 | } | 240 | } |
| 241 | |||
| 242 | void sp_cookie_list_free(sp_list_node *list) { | ||
| 243 | sp_list_node *cursor = list; | ||
| 244 | while (cursor) { | ||
| 245 | sp_cookie *c = cursor->data; | ||
| 246 | if (c) { | ||
| 247 | sp_pcre_free(c->name_r); | ||
| 248 | } | ||
| 249 | cursor = cursor->next; | ||
| 250 | } | ||
| 251 | } | ||
