author | Michael Nestler <Michael.Nestler@Oracle.COM> |
Thu, 19 Nov 2015 22:52:15 -0800 | |
changeset 5116 | 867d838118ad |
permissions | -rw-r--r-- |
5116
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
1 |
# Source: upstream |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
2 |
# http://git.php.net/?p=php-src.git;a=commitdiff;h=f57cb13c566613eec0e1c2f6d96d18565436a9b7 |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
3 |
# https://bugs.php.net/bug.php?id=70083 |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
4 |
# Security |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
5 |
|
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
6 |
From f57cb13c566613eec0e1c2f6d96d18565436a9b7 Mon Sep 17 00:00:00 2001 |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
7 |
From: Bob Weinand <[email protected]> |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
8 |
Date: Wed, 15 Jul 2015 22:46:53 +0200 |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
9 |
Subject: [PATCH] Backport fix for bug #70083 to PHP-5.6 |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
10 |
|
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
11 |
--- |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
12 |
Zend/zend_vm_def.h | 7 ++++--- |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
13 |
Zend/zend_vm_execute.h | 28 ++++++++++++++++------------ |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
14 |
2 files changed, 20 insertions(+), 15 deletions(-) |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
15 |
|
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
16 |
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
17 |
index 11f6205..7bfa814 100644 |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
18 |
--- a/Zend/zend_vm_def.h |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
19 |
+++ b/Zend/zend_vm_def.h |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
20 |
@@ -1774,6 +1774,10 @@ ZEND_VM_HANDLER(39, ZEND_ASSIGN_REF, VAR|CV, VAR|CV) |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
21 |
SAVE_OPLINE(); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
22 |
value_ptr_ptr = GET_OP2_ZVAL_PTR_PTR(BP_VAR_W); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
23 |
|
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
24 |
+ if (OP1_TYPE == IS_VAR && UNEXPECTED(EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr)) { |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
25 |
+ zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object"); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
26 |
+ } |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
27 |
+ |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
28 |
if (OP2_TYPE == IS_VAR && |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
29 |
value_ptr_ptr && |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
30 |
!Z_ISREF_PP(value_ptr_ptr) && |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
31 |
@@ -1791,9 +1795,6 @@ ZEND_VM_HANDLER(39, ZEND_ASSIGN_REF, VAR|CV, VAR|CV) |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
32 |
} else if (OP2_TYPE == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) { |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
33 |
PZVAL_LOCK(*value_ptr_ptr); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
34 |
} |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
35 |
- if (OP1_TYPE == IS_VAR && UNEXPECTED(EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr)) { |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
36 |
- zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object"); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
37 |
- } |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
38 |
|
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
39 |
variable_ptr_ptr = GET_OP1_ZVAL_PTR_PTR(BP_VAR_W); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
40 |
if ((OP2_TYPE == IS_VAR && UNEXPECTED(value_ptr_ptr == NULL)) || |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
41 |
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
42 |
index 5ed4135..07b9abc 100644 |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
43 |
--- a/Zend/zend_vm_execute.h |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
44 |
+++ b/Zend/zend_vm_execute.h |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
45 |
@@ -20331,6 +20331,10 @@ static int ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDL |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
46 |
SAVE_OPLINE(); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
47 |
value_ptr_ptr = _get_zval_ptr_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
48 |
|
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
49 |
+ if (IS_VAR == IS_VAR && UNEXPECTED(EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr)) { |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
50 |
+ zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object"); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
51 |
+ } |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
52 |
+ |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
53 |
if (IS_VAR == IS_VAR && |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
54 |
value_ptr_ptr && |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
55 |
!Z_ISREF_PP(value_ptr_ptr) && |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
56 |
@@ -20348,9 +20352,6 @@ static int ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDL |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
57 |
} else if (IS_VAR == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) { |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
58 |
PZVAL_LOCK(*value_ptr_ptr); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
59 |
} |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
60 |
- if (IS_VAR == IS_VAR && UNEXPECTED(EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr)) { |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
61 |
- zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object"); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
62 |
- } |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
63 |
|
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
64 |
variable_ptr_ptr = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
65 |
if ((IS_VAR == IS_VAR && UNEXPECTED(value_ptr_ptr == NULL)) || |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
66 |
@@ -23801,6 +23802,10 @@ static int ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLE |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
67 |
SAVE_OPLINE(); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
68 |
value_ptr_ptr = _get_zval_ptr_ptr_cv_BP_VAR_W(execute_data, opline->op2.var TSRMLS_CC); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
69 |
|
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
70 |
+ if (IS_VAR == IS_VAR && UNEXPECTED(EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr)) { |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
71 |
+ zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object"); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
72 |
+ } |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
73 |
+ |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
74 |
if (IS_CV == IS_VAR && |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
75 |
value_ptr_ptr && |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
76 |
!Z_ISREF_PP(value_ptr_ptr) && |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
77 |
@@ -23818,9 +23823,6 @@ static int ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLE |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
78 |
} else if (IS_CV == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) { |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
79 |
PZVAL_LOCK(*value_ptr_ptr); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
80 |
} |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
81 |
- if (IS_VAR == IS_VAR && UNEXPECTED(EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr)) { |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
82 |
- zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object"); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
83 |
- } |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
84 |
|
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
85 |
variable_ptr_ptr = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
86 |
if ((IS_CV == IS_VAR && UNEXPECTED(value_ptr_ptr == NULL)) || |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
87 |
@@ -37492,6 +37494,10 @@ static int ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLE |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
88 |
SAVE_OPLINE(); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
89 |
value_ptr_ptr = _get_zval_ptr_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
90 |
|
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
91 |
+ if (IS_CV == IS_VAR && UNEXPECTED(EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr)) { |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
92 |
+ zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object"); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
93 |
+ } |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
94 |
+ |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
95 |
if (IS_VAR == IS_VAR && |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
96 |
value_ptr_ptr && |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
97 |
!Z_ISREF_PP(value_ptr_ptr) && |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
98 |
@@ -37509,9 +37515,6 @@ static int ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLE |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
99 |
} else if (IS_VAR == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) { |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
100 |
PZVAL_LOCK(*value_ptr_ptr); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
101 |
} |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
102 |
- if (IS_CV == IS_VAR && UNEXPECTED(EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr)) { |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
103 |
- zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object"); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
104 |
- } |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
105 |
|
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
106 |
variable_ptr_ptr = _get_zval_ptr_ptr_cv_BP_VAR_W(execute_data, opline->op1.var TSRMLS_CC); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
107 |
if ((IS_VAR == IS_VAR && UNEXPECTED(value_ptr_ptr == NULL)) || |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
108 |
@@ -40675,6 +40678,10 @@ static int ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
109 |
SAVE_OPLINE(); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
110 |
value_ptr_ptr = _get_zval_ptr_ptr_cv_BP_VAR_W(execute_data, opline->op2.var TSRMLS_CC); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
111 |
|
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
112 |
+ if (IS_CV == IS_VAR && UNEXPECTED(EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr)) { |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
113 |
+ zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object"); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
114 |
+ } |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
115 |
+ |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
116 |
if (IS_CV == IS_VAR && |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
117 |
value_ptr_ptr && |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
118 |
!Z_ISREF_PP(value_ptr_ptr) && |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
119 |
@@ -40692,9 +40699,6 @@ static int ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
120 |
} else if (IS_CV == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) { |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
121 |
PZVAL_LOCK(*value_ptr_ptr); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
122 |
} |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
123 |
- if (IS_CV == IS_VAR && UNEXPECTED(EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr)) { |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
124 |
- zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object"); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
125 |
- } |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
126 |
|
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
127 |
variable_ptr_ptr = _get_zval_ptr_ptr_cv_BP_VAR_W(execute_data, opline->op1.var TSRMLS_CC); |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
128 |
if ((IS_CV == IS_VAR && UNEXPECTED(value_ptr_ptr == NULL)) || |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
129 |
-- |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
130 |
2.1.4 |
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
131 |
|
867d838118ad
22244227 problem in UTILITY/PHP
Michael Nestler <Michael.Nestler@Oracle.COM>
parents:
diff
changeset
|
132 |