@@ -8395,6 +8395,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CONST_TMPVAR_HANDL
8395
8395
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
8396
8396
size_t len = ZSTR_LEN(op1_str);
8397
8397
8398
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
8399
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
8400
+ }
8398
8401
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
8399
8402
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
8400
8403
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
@@ -10747,6 +10750,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CONST_CV_HANDLER(Z
10747
10750
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
10748
10751
size_t len = ZSTR_LEN(op1_str);
10749
10752
10753
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
10754
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
10755
+ }
10750
10756
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
10751
10757
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
10752
10758
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
@@ -14824,6 +14830,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_TMPVAR_CONST_HANDL
14824
14830
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
14825
14831
size_t len = ZSTR_LEN(op1_str);
14826
14832
14833
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
14834
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
14835
+ }
14827
14836
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
14828
14837
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
14829
14838
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
@@ -16244,6 +16253,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_HAND
16244
16253
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
16245
16254
size_t len = ZSTR_LEN(op1_str);
16246
16255
16256
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
16257
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
16258
+ }
16247
16259
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
16248
16260
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
16249
16261
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
@@ -17918,6 +17930,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_TMPVAR_CV_HANDLER(
17918
17930
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
17919
17931
size_t len = ZSTR_LEN(op1_str);
17920
17932
17933
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
17934
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
17935
+ }
17921
17936
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
17922
17937
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
17923
17938
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
@@ -38883,6 +38898,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CV_CONST_HANDLER(Z
38883
38898
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
38884
38899
size_t len = ZSTR_LEN(op1_str);
38885
38900
38901
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
38902
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
38903
+ }
38886
38904
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
38887
38905
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
38888
38906
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
@@ -42542,6 +42560,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CV_TMPVAR_HANDLER(
42542
42560
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
42543
42561
size_t len = ZSTR_LEN(op1_str);
42544
42562
42563
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
42564
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
42565
+ }
42545
42566
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
42546
42567
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
42547
42568
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
@@ -47544,6 +47565,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CV_CV_HANDLER(ZEND
47544
47565
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
47545
47566
size_t len = ZSTR_LEN(op1_str);
47546
47567
47568
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
47569
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
47570
+ }
47547
47571
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
47548
47572
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
47549
47573
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
0 commit comments