From a81472d0108d16e680980a9e0c1b4af0d629c43a Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Wed, 18 Jul 2018 06:37:53 +0200 Subject: [PATCH] fix for 7.3.0alpha4 --- src/php_http_header_parser.c | 9 +++++++-- src/php_http_message_body.c | 20 +++++++++++++++----- src/php_http_params.c | 4 ++++ 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/php_http_header_parser.c b/src/php_http_header_parser.c index b97ae6b..cd76b76 100644 --- a/src/php_http_header_parser.c +++ b/src/php_http_header_parser.c @@ -74,9 +74,14 @@ void php_http_header_parser_free(php_http_header_parser_t **parser) /* NOTE: 'str' has to be null terminated */ static void php_http_header_parser_error(size_t valid_len, char *str, size_t len, const char *eol_str ) { - zend_string *escaped_str = zend_string_init(str, len, 0); + zend_string *escaped_str, *zstr_str = zend_string_init(str, len, 0); - escaped_str = php_addcslashes(escaped_str, 1, ZEND_STRL("\x0..\x1F\x7F..\xFF")); +#if PHP_VERSION_ID < 70300 + escaped_str = php_addcslashes(zstr_str, 1, ZEND_STRL("\x0..\x1F\x7F..\xFF")); +#else + escaped_str = php_addcslashes(zstr_str, ZEND_STRL("\x0..\x1F\x7F..\xFF")); + zend_string_release_ex(zstr_str, 0); +#endif if (valid_len != len && (!eol_str || (str+valid_len) != eol_str)) { php_error_docref(NULL, E_WARNING, "Failed to parse headers: unexpected character '\\%03o' at pos %zu of '%s'", str[valid_len], valid_len, escaped_str->val); diff --git a/src/php_http_message_body.c b/src/php_http_message_body.c index 526c233..518dbc9 100644 --- a/src/php_http_message_body.c +++ b/src/php_http_message_body.c @@ -262,9 +262,14 @@ void php_http_message_body_add_part(php_http_message_body_t *body, php_http_mess ZEND_RESULT_CODE php_http_message_body_add_form_field(php_http_message_body_t *body, const char *name, const char *value_str, size_t value_len) { - zend_string *safe_name = zend_string_init(name, strlen(name), 0); + zend_string *safe_name, *zstr_name = zend_string_init(name, strlen(name), 0); - safe_name = php_addslashes(safe_name, 1); +#if PHP_VERSION_ID < 70300 + safe_name = php_addslashes(zstr_name, 1); +#else + safe_name = php_addslashes(zstr_name); + zend_string_release_ex(zstr_name, 0); +#endif BOUNDARY_OPEN(body); php_http_message_body_appendf( @@ -284,9 +289,14 @@ ZEND_RESULT_CODE php_http_message_body_add_form_file(php_http_message_body_t *bo { size_t path_len = strlen(path); char *path_dup = estrndup(path, path_len); - zend_string *base_name, *safe_name = zend_string_init(name, strlen(name), 0); - - safe_name = php_addslashes(safe_name, 1); + zend_string *base_name, *safe_name, *zstr_name = zend_string_init(name, strlen(name), 0); + +#if PHP_VERSION_ID < 70300 + safe_name = php_addslashes(zstr_name, 1); +#else + safe_name = php_addslashes(zstr_name); + zend_string_release_ex(zstr_name, 0); +#endif base_name = php_basename(path_dup, path_len, NULL, 0); BOUNDARY_OPEN(body); diff --git a/src/php_http_params.c b/src/php_http_params.c index b22769e..0cbfc7e 100644 --- a/src/php_http_params.c +++ b/src/php_http_params.c @@ -67,7 +67,11 @@ static inline zend_string *quote_string(zend_string *zs, zend_bool force) { size_t len = (zs)->len; +#if PHP_VERSION_ID < 70300 zs = php_addcslashes(zs, 0, ZEND_STRL("\0..\37\173\\\"")); +#else + zs = php_addcslashes(zs, ZEND_STRL("\0..\37\173\\\"")); +#endif if (force || len != (zs)->len || strpbrk((zs)->val, "()<>@,;:\"[]?={} ")) { int len = (zs)->len + 2;