summaryrefslogtreecommitdiffstats
path: root/a81472d0108d16e680980a9e0c1b4af0d629c43a.patch
blob: f6309392482d1c9952811ab228acc8f909887147 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
From a81472d0108d16e680980a9e0c1b4af0d629c43a Mon Sep 17 00:00:00 2001
From: Remi Collet <remi@remirepo.net>
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;