@@ -7899,6 +7899,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR_
7899
7899
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
7900
7900
size_t len = ZSTR_LEN(op1_str);
7901
7901
7902
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
7903
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
7904
+ }
7902
7905
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
7903
7906
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
7904
7907
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
@@ -10357,6 +10360,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_CONST_CV_HAND
10357
10360
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
10358
10361
size_t len = ZSTR_LEN(op1_str);
10359
10362
10363
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
10364
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
10365
+ }
10360
10366
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
10361
10367
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
10362
10368
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
@@ -14674,6 +14680,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST_
14674
14680
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
14675
14681
size_t len = ZSTR_LEN(op1_str);
14676
14682
14683
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
14684
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
14685
+ }
14677
14686
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
14678
14687
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
14679
14688
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
@@ -15343,6 +15352,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_HAND
15343
15352
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
15344
15353
size_t len = ZSTR_LEN(op1_str);
15345
15354
15355
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
15356
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
15357
+ }
15346
15358
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
15347
15359
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
15348
15360
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
@@ -17027,6 +17039,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_TMPVAR_CV_HANDLER(
17027
17039
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
17028
17040
size_t len = ZSTR_LEN(op1_str);
17029
17041
17042
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
17043
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
17044
+ }
17030
17045
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
17031
17046
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
17032
17047
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
@@ -38332,6 +38347,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CV_CONST_HANDLER(Z
38332
38347
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
38333
38348
size_t len = ZSTR_LEN(op1_str);
38334
38349
38350
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
38351
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
38352
+ }
38335
38353
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
38336
38354
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
38337
38355
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
@@ -40708,6 +40726,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_CV_CONST_HAND
40708
40726
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
40709
40727
size_t len = ZSTR_LEN(op1_str);
40710
40728
40729
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
40730
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
40731
+ }
40711
40732
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
40712
40733
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
40713
40734
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
@@ -46835,6 +46856,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CV_CV_HANDLER(ZEND
46835
46856
!ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
46836
46857
size_t len = ZSTR_LEN(op1_str);
46837
46858
46859
+ if (UNEXPECTED(len > ZSTR_MAX_LEN - ZSTR_LEN(op2_str))) {
46860
+ zend_error_noreturn(E_ERROR, "Integer overflow in memory allocation");
46861
+ }
46838
46862
str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
46839
46863
memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
46840
46864
ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
0 commit comments