summaryrefslogtreecommitdiff
path: root/src/sp_config.c
diff options
context:
space:
mode:
authorBen Fuhrmannek2021-08-02 10:42:12 +0200
committerBen Fuhrmannek2021-08-02 10:42:12 +0200
commit4cda0120313dfd5d71236f6faf87416e93f5f89c (patch)
tree0c2c6d15e8ac5287fb3304f96de719547d9e847a /src/sp_config.c
parent6c132e6a1d8d339a20282afb5a4af52eb6bce9db (diff)
parente62f226c3ed885808c832040872fc2d73ca46dac (diff)
Merge branch 'master' of https://github.com/jvoisin/snuffleupagus
Diffstat (limited to 'src/sp_config.c')
-rw-r--r--src/sp_config.c31
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
7size_t sp_line_no; 7size_t sp_line_no;
8 8
9sp_config_tokens const sp_func[] = { 9static 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
242void 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}