X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_cookie.c;h=b767bbbb7e83d974b716ff19ed435068536c9150;hp=6908d386247e4b09de79af5b3e4618beb8887ffe;hb=25f0c16244fc5f8b2c9d9bfddab8a541d2521789;hpb=f53a076880dc4a087a1be843506c9434fbc61d63 diff --git a/php_http_cookie.c b/php_http_cookie.c index 6908d38..b767bbb 100644 --- a/php_http_cookie.c +++ b/php_http_cookie.c @@ -136,13 +136,11 @@ static void add_entry(php_http_cookie_list_t *list, char **allowed_extras, long } else if _KEY_IS("httpOnly") { list->flags |= PHP_HTTP_COOKIE_HTTPONLY; } else { - char buf[0x20]; - - php_http_array_hashkey_stringify(key); /* check for extra */ if (allowed_extras) { char **ae = allowed_extras; + php_http_array_hashkey_stringify(key); for (; *ae; ++ae) { if (!strncasecmp(key->str, *ae, key->len)) { if (key->type == HASH_KEY_IS_LONG) { @@ -150,11 +148,12 @@ static void add_entry(php_http_cookie_list_t *list, char **allowed_extras, long } else { zend_hash_update(&list->extras, key->str, key->len, (void *) &arg, sizeof(zval *), NULL); } + php_http_array_hashkey_stringfree(key); return; } } + php_http_array_hashkey_stringfree(key); } - php_http_array_hashkey_stringfree(key); /* cookie */ if (key->type == HASH_KEY_IS_LONG) { @@ -340,8 +339,8 @@ PHP_HTTP_API void php_http_cookie_list_to_string(php_http_cookie_list_t *list, c } php_http_buffer_fix(&buf); - *str = PHP_HTTP_BUFFER_VAL(&buf); - *len = PHP_HTTP_BUFFER_LEN(&buf); + *str = buf.data; + *len = buf.used; } #define PHP_HTTP_BEGIN_ARGS(method, req_args) PHP_HTTP_BEGIN_ARGS_EX(HttpCookie, method, 0, req_args) @@ -552,6 +551,15 @@ PHP_METHOD(HttpCookie, __construct) break; } } + + if (ae) { + char **ae_ptr; + + for (ae_ptr = ae; *ae_ptr; ++ae_ptr) { + efree(*ae_ptr); + } + efree(ae); + } } end_error_handling(); } }