author | Michael Nestler <Michael.Nestler@Oracle.COM> |
Fri, 05 Jun 2015 09:47:02 -0700 | |
branch | s11-update |
changeset 4418 | 7ae5fd823a4b |
permissions | -rw-r--r-- |
4418
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
1 |
# Source: upstream |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
2 |
# https://bugs.php.net/patch-display.php?bug_id=69364&patch=patch-5.4&revision=1431237650 |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
3 |
# Fixed in 5.6.9 |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
4 |
|
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
5 |
diff --git a/main/rfc1867.c b/main/rfc1867.c |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
6 |
index fab199b..9e2fbd5 100644 |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
7 |
--- a/main/rfc1867.c |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
8 |
+++ b/main/rfc1867.c |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
9 |
@@ -33,6 +33,7 @@ |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
10 |
#include "php_variables.h" |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
11 |
#include "rfc1867.h" |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
12 |
#include "ext/standard/php_string.h" |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
13 |
+#include "ext/standard/php_smart_str.h" |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
14 |
|
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
15 |
#define DEBUG_FILE_UPLOAD ZEND_DEBUG |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
16 |
|
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
17 |
@@ -398,8 +399,9 @@ static int find_boundary(multipart_buffer *self, char *boundary TSRMLS_DC) |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
18 |
static int multipart_buffer_headers(multipart_buffer *self, zend_llist *header TSRMLS_DC) |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
19 |
{ |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
20 |
char *line; |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
21 |
- mime_header_entry prev_entry = {0}, entry; |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
22 |
- int prev_len, cur_len; |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
23 |
+ mime_header_entry entry = {0}; |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
24 |
+ smart_str buf_value = {0}; |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
25 |
+ char *key = NULL; |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
26 |
|
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
27 |
/* didn't find boundary, abort */ |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
28 |
if (!find_boundary(self, self->boundary TSRMLS_CC)) { |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
29 |
@@ -411,11 +413,10 @@ static int multipart_buffer_headers(multipart_buffer *self, zend_llist *header T |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
30 |
while( (line = get_line(self TSRMLS_CC)) && strlen(line) > 0 ) |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
31 |
{ |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
32 |
/* add header to table */ |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
33 |
- char *key = line; |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
34 |
char *value = NULL; |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
35 |
|
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
36 |
if (php_rfc1867_encoding_translation(TSRMLS_C)) { |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
37 |
- self->input_encoding = zend_multibyte_encoding_detector(line, strlen(line), self->detect_order, self->detect_order_size TSRMLS_CC); |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
38 |
+ self->input_encoding = zend_multibyte_encoding_detector((unsigned char *)line, strlen(line), self->detect_order, self->detect_order_size TSRMLS_CC); |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
39 |
} |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
40 |
|
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
41 |
/* space in the beginning means same header */ |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
42 |
@@ -424,31 +425,33 @@ static int multipart_buffer_headers(multipart_buffer *self, zend_llist *header T |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
43 |
} |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
44 |
|
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
45 |
if (value) { |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
46 |
- *value = 0; |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
47 |
- do { value++; } while(isspace(*value)); |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
48 |
- |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
49 |
- entry.value = estrdup(value); |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
50 |
- entry.key = estrdup(key); |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
51 |
- |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
52 |
- } else if (zend_llist_count(header)) { /* If no ':' on the line, add to previous line */ |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
53 |
- |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
54 |
- prev_len = strlen(prev_entry.value); |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
55 |
- cur_len = strlen(line); |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
56 |
- |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
57 |
- entry.value = emalloc(prev_len + cur_len + 1); |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
58 |
- memcpy(entry.value, prev_entry.value, prev_len); |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
59 |
- memcpy(entry.value + prev_len, line, cur_len); |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
60 |
- entry.value[cur_len + prev_len] = '\0'; |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
61 |
+ if(buf_value.c && key) { |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
62 |
+ /* new entry, add the old one to the list */ |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
63 |
+ smart_str_0(&buf_value); |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
64 |
+ entry.key = key; |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
65 |
+ entry.value = buf_value.c; |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
66 |
+ zend_llist_add_element(header, &entry); |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
67 |
+ buf_value.c = NULL; |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
68 |
+ key = NULL; |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
69 |
+ } |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
70 |
|
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
71 |
- entry.key = estrdup(prev_entry.key); |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
72 |
+ *value = '\0'; |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
73 |
+ do { value++; } while(isspace(*value)); |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
74 |
|
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
75 |
- zend_llist_remove_tail(header); |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
76 |
+ key = estrdup(line); |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
77 |
+ smart_str_appends(&buf_value, value); |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
78 |
+ } else if (buf_value.c) { /* If no ':' on the line, add to previous line */ |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
79 |
+ smart_str_appends(&buf_value, line); |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
80 |
} else { |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
81 |
continue; |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
82 |
} |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
83 |
- |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
84 |
+ } |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
85 |
+ if(buf_value.c && key) { |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
86 |
+ /* add the last one to the list */ |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
87 |
+ smart_str_0(&buf_value); |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
88 |
+ entry.key = key; |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
89 |
+ entry.value = buf_value.c; |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
90 |
zend_llist_add_element(header, &entry); |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
91 |
- prev_entry = entry; |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
92 |
} |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
93 |
|
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
94 |
return 1; |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
95 |
@@ -884,7 +887,7 @@ SAPI_API SAPI_POST_HANDLER_FUNC(rfc1867_post_handler) /* {{{ */ |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
96 |
if (count == PG(max_input_vars) + 1) { |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
97 |
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Input variables exceeded %ld. To increase the limit change max_input_vars in php.ini.", PG(max_input_vars)); |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
98 |
} |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
99 |
- |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
100 |
+ |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
101 |
if (php_rfc1867_callback != NULL) { |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
102 |
multipart_event_formdata event_formdata; |
7ae5fd823a4b
PSARC 2015/255 Update PHP to version 5.6.8
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
103 |