Skip to content

Commit 2a1b605

Browse files
committed
Merge branch 'PHP-5.5' into PHP-5.6
* PHP-5.5: stop warnings from unused opcode map - BFN - Fixed bug #66311 (Stack smashing protection kills PDO/ODBC queries) patch by: michael at orlitzky dot com Included new .c file in build too Fixed little typo in zend_vm_gen.php Moved to new file, killing a lot of warnings
2 parents b14f318 + 247ec0d commit 2a1b605

File tree

12 files changed

+296
-181
lines changed

12 files changed

+296
-181
lines changed

NEWS

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,69 @@
11
PHP NEWS
22
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3+
<<<<<<< HEAD
34
?? ??? 20??, PHP 5.6.0
5+
=======
6+
?? ??? 2013, PHP 5.5.8
7+
8+
- Core:
9+
. Disallowed JMP into a finally block. (Laruence)
10+
. Added validation of class names in the autoload process. (Dmitry)
11+
. Fixed invalid C code in zend_strtod.c. (Lior Kaplan)
12+
. Fixed bug #66041 (list() fails to unpack yielded ArrayAccess object).
13+
(Nikita)
14+
. Fixed bug #65764 (generators/throw_rethrow FAIL with
15+
ZEND_COMPILE_EXTENDED_INFO). (Nikita)
16+
. Fixed bug #61645 (fopen and O_NONBLOCK). (Mike)
17+
. Fixed bug #66218 (zend_register_functions breaks reflection). (Remi)
18+
19+
- Date:
20+
. Fixed bug #66060 (Heap buffer over-read in DateInterval). (Remi)
21+
. Fixed bug #65768 (DateTimeImmutable::diff does not work). (Nikita Nefedov)
22+
23+
- DOM:
24+
. Fixed bug #65196 (Passing DOMDocumentFragment to DOMDocument::saveHTML()
25+
Produces invalid Markup). (Mike)
26+
27+
- Exif:
28+
. Fixed bug #65873 (Integer overflow in exif_read_data()). (Stas)
29+
30+
- Filter:
31+
. Fixed bug #66229 (128.0.0.0/16 isn't reserved any longer). (Adam)
32+
33+
- GD:
34+
. Fixed bug #64405 (Use freetype-config for determining freetype2 dir(s)).
35+
(Adam)
36+
37+
- PDO_odbc:
38+
. Fixed bug #66311 (Stack smashing protection kills PDO/ODBC queries).
39+
(michael at orlitzky dot com)
40+
41+
- MySQLi:
42+
. Fixed bug #65486 (mysqli_poll() is broken on win x64). (Anatol)
43+
44+
- OPCache:
45+
. Fixed reavlidate_path=1 behavior to avoid caching of symlinks values.
46+
(Dmitry)
47+
48+
- SNMP:
49+
. Fixed SNMP_ERR_TOOBIG handling for bulk walk operations. (Boris Lytochkin)
50+
51+
- SOAP
52+
. Fixed bug #66112 (Use after free condition in SOAP extension).
53+
(martin dot koegler at brz dot gv dot at)
54+
55+
- Sockets:
56+
. Fixed bug #65923 (ext/socket assumes AI_V4MAPPED is defined). (Felipe)
57+
58+
- XSL
59+
. Fixed bug #49634 (Segfault throwing an exception in a XSL registered
60+
function). (Mike)
61+
62+
- ZIP:
63+
. Fixed Bug #66321 (ZipArchive::open() ze_obj->filename_len not real). (Remi)
64+
65+
12 Dec 2013, PHP 5.5.7
66+
>>>>>>> PHP-5.5
467

568
- CLI server:
669
. Added some MIME types to the CLI web server. (Chris Jones)

Zend/Makefile.am

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ libZend_la_SOURCES=\
1010
zend_ini_parser.y zend_ini_scanner.l \
1111
zend_alloc.c zend_compile.c zend_constants.c zend_dynamic_array.c \
1212
zend_execute.c zend_execute_API.c zend_highlight.c zend_llist.c \
13-
zend_opcode.c zend_operators.c zend_ptr_stack.c zend_stack.c \
13+
zend_vm_opcodes.c zend_opcode.c zend_operators.c zend_ptr_stack.c zend_stack.c \
1414
zend_variables.c zend.c zend_API.c zend_extensions.c zend_hash.c \
1515
zend_list.c zend_indent.c zend_builtin_functions.c zend_sprintf.c \
1616
zend_ini.c zend_qsort.c zend_objects.c zend_object_handlers.c \

Zend/Zend.dsp

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Zend/ZendTS.dsp

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Zend/zend_language_scanner.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* Generated by re2c 0.13.5 */
1+
/* Generated by re2c 0.13.5 on Sun Dec 22 13:03:33 2013 */
22
#line 1 "Zend/zend_language_scanner.l"
33
/*
44
+----------------------------------------------------------------------+

Zend/zend_language_scanner_defs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* Generated by re2c 0.13.5 */
1+
/* Generated by re2c 0.13.5 on Sun Dec 22 13:03:33 2013 */
22
#line 3 "Zend/zend_language_scanner_defs.h"
33

44
enum YYCONDTYPE {

Zend/zend_vm_gen.php

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1208,22 +1208,38 @@ function gen_vm($def, $skel) {
12081208
out($f, $GLOBALS['header_text']);
12091209

12101210
fputs($f, "#ifndef ZEND_VM_OPCODES_H\n#define ZEND_VM_OPCODES_H\n\n");
1211-
1211+
fputs($f, "ZEND_API const char *zend_get_opcode_name(zend_uchar opcode);\n\n");
1212+
12121213
foreach ($opcodes as $code => $dsc) {
12131214
$code = str_pad((string)$code,$code_len," ",STR_PAD_LEFT);
12141215
$op = str_pad($dsc["op"],$max_opcode_len);
12151216
fputs($f,"#define $op $code\n");
12161217
}
12171218

1218-
fputs($f,"\nstatic const char *zend_vm_opcodes_map[] = {\n");
1219+
fputs($f, "\n#endif");
1220+
fclose($f);
1221+
echo "zend_vm_opcodes.h generated successfully.\n";
1222+
1223+
// zend_vm_opcodes.c
1224+
$f = fopen(__DIR__ . "/zend_vm_opcodes.c", "w+") or die("ERROR: Cannot create zend_vm_opcodes.c\n");
1225+
1226+
// Insert header
1227+
out($f, $GLOBALS['header_text']);
1228+
fputs($f,"#include <stdio.h>\n");
1229+
fputs($f,"#include <zend.h>\n\n");
1230+
1231+
fputs($f,"const char *zend_vm_opcodes_map[".($max_opcode + 1)."] = {\n");
12191232
for ($i = 0; $i <= $max_opcode; $i++) {
12201233
fputs($f,"\t".(isset($opcodes[$i]["op"])?'"'.$opcodes[$i]["op"].'"':"NULL").",\n");
12211234
}
1222-
fputs($f, "};\n");
1223-
1224-
fputs($f, "\n#endif");
1235+
fputs($f, "};\n\n");
1236+
1237+
fputs($f, "ZEND_API const char* zend_get_opcode_name(zend_uchar opcode) {\n");
1238+
fputs($f, "\treturn zend_vm_opcodes_map[opcode];\n");
1239+
fputs($f, "}\n");
1240+
12251241
fclose($f);
1226-
echo "zend_vm_opcodes.h generated successfully.\n";
1242+
echo "zend_vm_opcodes.c generated successfully.\n";
12271243

12281244
// Generate zend_vm_execute.h
12291245
$f = fopen(__DIR__ . "/zend_vm_execute.h", "w+") or die("ERROR: Cannot create zend_vm_execute.h\n");

Zend/zend_vm_opcodes.c

Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,193 @@
1+
/*
2+
+----------------------------------------------------------------------+
3+
| Zend Engine |
4+
+----------------------------------------------------------------------+
5+
| Copyright (c) 1998-2013 Zend Technologies Ltd. (http://www.zend.com) |
6+
+----------------------------------------------------------------------+
7+
| This source file is subject to version 2.00 of the Zend license, |
8+
| that is bundled with this package in the file LICENSE, and is |
9+
| available through the world-wide-web at the following url: |
10+
| http://www.zend.com/license/2_00.txt. |
11+
| If you did not receive a copy of the Zend license and are unable to |
12+
| obtain it through the world-wide-web, please send a note to |
13+
| license@zend.com so we can mail you a copy immediately. |
14+
+----------------------------------------------------------------------+
15+
| Authors: Andi Gutmans <andi@zend.com> |
16+
| Zeev Suraski <zeev@zend.com> |
17+
| Dmitry Stogov <dmitry@zend.com> |
18+
+----------------------------------------------------------------------+
19+
*/
20+
21+
#include <stdio.h>
22+
#include <zend.h>
23+
24+
const char *zend_vm_opcodes_map[164] = {
25+
"ZEND_NOP",
26+
"ZEND_ADD",
27+
"ZEND_SUB",
28+
"ZEND_MUL",
29+
"ZEND_DIV",
30+
"ZEND_MOD",
31+
"ZEND_SL",
32+
"ZEND_SR",
33+
"ZEND_CONCAT",
34+
"ZEND_BW_OR",
35+
"ZEND_BW_AND",
36+
"ZEND_BW_XOR",
37+
"ZEND_BW_NOT",
38+
"ZEND_BOOL_NOT",
39+
"ZEND_BOOL_XOR",
40+
"ZEND_IS_IDENTICAL",
41+
"ZEND_IS_NOT_IDENTICAL",
42+
"ZEND_IS_EQUAL",
43+
"ZEND_IS_NOT_EQUAL",
44+
"ZEND_IS_SMALLER",
45+
"ZEND_IS_SMALLER_OR_EQUAL",
46+
"ZEND_CAST",
47+
"ZEND_QM_ASSIGN",
48+
"ZEND_ASSIGN_ADD",
49+
"ZEND_ASSIGN_SUB",
50+
"ZEND_ASSIGN_MUL",
51+
"ZEND_ASSIGN_DIV",
52+
"ZEND_ASSIGN_MOD",
53+
"ZEND_ASSIGN_SL",
54+
"ZEND_ASSIGN_SR",
55+
"ZEND_ASSIGN_CONCAT",
56+
"ZEND_ASSIGN_BW_OR",
57+
"ZEND_ASSIGN_BW_AND",
58+
"ZEND_ASSIGN_BW_XOR",
59+
"ZEND_PRE_INC",
60+
"ZEND_PRE_DEC",
61+
"ZEND_POST_INC",
62+
"ZEND_POST_DEC",
63+
"ZEND_ASSIGN",
64+
"ZEND_ASSIGN_REF",
65+
"ZEND_ECHO",
66+
"ZEND_PRINT",
67+
"ZEND_JMP",
68+
"ZEND_JMPZ",
69+
"ZEND_JMPNZ",
70+
"ZEND_JMPZNZ",
71+
"ZEND_JMPZ_EX",
72+
"ZEND_JMPNZ_EX",
73+
"ZEND_CASE",
74+
"ZEND_SWITCH_FREE",
75+
"ZEND_BRK",
76+
"ZEND_CONT",
77+
"ZEND_BOOL",
78+
"ZEND_INIT_STRING",
79+
"ZEND_ADD_CHAR",
80+
"ZEND_ADD_STRING",
81+
"ZEND_ADD_VAR",
82+
"ZEND_BEGIN_SILENCE",
83+
"ZEND_END_SILENCE",
84+
"ZEND_INIT_FCALL_BY_NAME",
85+
"ZEND_DO_FCALL",
86+
"ZEND_DO_FCALL_BY_NAME",
87+
"ZEND_RETURN",
88+
"ZEND_RECV",
89+
"ZEND_RECV_INIT",
90+
"ZEND_SEND_VAL",
91+
"ZEND_SEND_VAR",
92+
"ZEND_SEND_REF",
93+
"ZEND_NEW",
94+
"ZEND_INIT_NS_FCALL_BY_NAME",
95+
"ZEND_FREE",
96+
"ZEND_INIT_ARRAY",
97+
"ZEND_ADD_ARRAY_ELEMENT",
98+
"ZEND_INCLUDE_OR_EVAL",
99+
"ZEND_UNSET_VAR",
100+
"ZEND_UNSET_DIM",
101+
"ZEND_UNSET_OBJ",
102+
"ZEND_FE_RESET",
103+
"ZEND_FE_FETCH",
104+
"ZEND_EXIT",
105+
"ZEND_FETCH_R",
106+
"ZEND_FETCH_DIM_R",
107+
"ZEND_FETCH_OBJ_R",
108+
"ZEND_FETCH_W",
109+
"ZEND_FETCH_DIM_W",
110+
"ZEND_FETCH_OBJ_W",
111+
"ZEND_FETCH_RW",
112+
"ZEND_FETCH_DIM_RW",
113+
"ZEND_FETCH_OBJ_RW",
114+
"ZEND_FETCH_IS",
115+
"ZEND_FETCH_DIM_IS",
116+
"ZEND_FETCH_OBJ_IS",
117+
"ZEND_FETCH_FUNC_ARG",
118+
"ZEND_FETCH_DIM_FUNC_ARG",
119+
"ZEND_FETCH_OBJ_FUNC_ARG",
120+
"ZEND_FETCH_UNSET",
121+
"ZEND_FETCH_DIM_UNSET",
122+
"ZEND_FETCH_OBJ_UNSET",
123+
"ZEND_FETCH_DIM_TMP_VAR",
124+
"ZEND_FETCH_CONSTANT",
125+
"ZEND_GOTO",
126+
"ZEND_EXT_STMT",
127+
"ZEND_EXT_FCALL_BEGIN",
128+
"ZEND_EXT_FCALL_END",
129+
"ZEND_EXT_NOP",
130+
"ZEND_TICKS",
131+
"ZEND_SEND_VAR_NO_REF",
132+
"ZEND_CATCH",
133+
"ZEND_THROW",
134+
"ZEND_FETCH_CLASS",
135+
"ZEND_CLONE",
136+
"ZEND_RETURN_BY_REF",
137+
"ZEND_INIT_METHOD_CALL",
138+
"ZEND_INIT_STATIC_METHOD_CALL",
139+
"ZEND_ISSET_ISEMPTY_VAR",
140+
"ZEND_ISSET_ISEMPTY_DIM_OBJ",
141+
NULL,
142+
NULL,
143+
NULL,
144+
NULL,
145+
NULL,
146+
NULL,
147+
NULL,
148+
NULL,
149+
NULL,
150+
NULL,
151+
NULL,
152+
NULL,
153+
NULL,
154+
NULL,
155+
NULL,
156+
NULL,
157+
"ZEND_PRE_INC_OBJ",
158+
"ZEND_PRE_DEC_OBJ",
159+
"ZEND_POST_INC_OBJ",
160+
"ZEND_POST_DEC_OBJ",
161+
"ZEND_ASSIGN_OBJ",
162+
NULL,
163+
"ZEND_INSTANCEOF",
164+
"ZEND_DECLARE_CLASS",
165+
"ZEND_DECLARE_INHERITED_CLASS",
166+
"ZEND_DECLARE_FUNCTION",
167+
"ZEND_RAISE_ABSTRACT_ERROR",
168+
"ZEND_DECLARE_CONST",
169+
"ZEND_ADD_INTERFACE",
170+
"ZEND_DECLARE_INHERITED_CLASS_DELAYED",
171+
"ZEND_VERIFY_ABSTRACT_CLASS",
172+
"ZEND_ASSIGN_DIM",
173+
"ZEND_ISSET_ISEMPTY_PROP_OBJ",
174+
"ZEND_HANDLE_EXCEPTION",
175+
"ZEND_USER_OPCODE",
176+
NULL,
177+
"ZEND_JMP_SET",
178+
"ZEND_DECLARE_LAMBDA_FUNCTION",
179+
"ZEND_ADD_TRAIT",
180+
"ZEND_BIND_TRAITS",
181+
"ZEND_SEPARATE",
182+
"ZEND_QM_ASSIGN_VAR",
183+
"ZEND_JMP_SET_VAR",
184+
"ZEND_DISCARD_EXCEPTION",
185+
"ZEND_YIELD",
186+
"ZEND_GENERATOR_RETURN",
187+
"ZEND_FAST_CALL",
188+
"ZEND_FAST_RET",
189+
};
190+
191+
ZEND_API const char* zend_get_opcode_name(zend_uchar opcode) {
192+
return zend_vm_opcodes_map[opcode];
193+
}

0 commit comments

Comments
 (0)