@@ -8179,6 +8179,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CONST_TMPVAR_HANDL
8179
8179
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
8180
8180
size_t len = ZSTR_LEN(op1_str);
8181
8181
8182
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
8183
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
8184
+ }
8182
8185
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
8183
8186
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
8184
8187
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
@@ -10562,6 +10565,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CONST_CV_HANDLER(Z
10562
10565
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
10563
10566
size_t len = ZSTR_LEN(op1_str);
10564
10567
10568
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
10569
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
10570
+ }
10565
10571
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
10566
10572
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
10567
10573
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
@@ -14625,6 +14631,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_TMPVAR_CONST_HANDL
14625
14631
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
14626
14632
size_t len = ZSTR_LEN(op1_str);
14627
14633
14634
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
14635
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
14636
+ }
14628
14637
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
14629
14638
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
14630
14639
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
@@ -16045,6 +16054,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_HAND
16045
16054
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
16046
16055
size_t len = ZSTR_LEN(op1_str);
16047
16056
16057
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
16058
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
16059
+ }
16048
16060
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
16049
16061
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
16050
16062
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
@@ -17717,6 +17729,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_TMPVAR_CV_HANDLER(
17717
17729
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
17718
17730
size_t len = ZSTR_LEN(op1_str);
17719
17731
17732
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
17733
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
17734
+ }
17720
17735
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
17721
17736
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
17722
17737
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
@@ -38633,6 +38648,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CV_CONST_HANDLER(Z
38633
38648
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
38634
38649
size_t len = ZSTR_LEN(op1_str);
38635
38650
38651
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
38652
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
38653
+ }
38636
38654
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
38637
38655
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
38638
38656
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
@@ -42247,6 +42265,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CV_TMPVAR_HANDLER(
42247
42265
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
42248
42266
size_t len = ZSTR_LEN(op1_str);
42249
42267
42268
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
42269
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
42270
+ }
42250
42271
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
42251
42272
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
42252
42273
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
@@ -47225,6 +47246,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CV_CV_HANDLER(ZEND
47225
47246
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
47226
47247
size_t len = ZSTR_LEN(op1_str);
47227
47248
47249
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
47250
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
47251
+ }
47228
47252
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
47229
47253
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
47230
47254
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
0 commit comments