Skip to content

Commit b2b9e2e

Browse files
committed
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3: Fix #80213: imap_mail_compose() segfaults on certain $bodies
2 parents 82e5752 + 8bee0fb commit b2b9e2e

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed

NEWS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ PHP NEWS
1313
- Calendar:
1414
. Fixed bug #80185 (jdtounix() fails after 2037). (cmb)
1515

16+
- IMAP:
17+
. Fixed bug #80213 (imap_mail_compose() segfaults on certain $bodies). (cmb)
18+
1619
- MySQLnd:
1720
. Fixed bug #80115 (mysqlnd.debug doesn't recognize absolute paths with
1821
slashes). (cmb)

ext/imap/php_imap.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3657,6 +3657,7 @@ PHP_FUNCTION(imap_mail_compose)
36573657
if(Z_TYPE_P(pvalue) == IS_ARRAY) {
36583658
disp_param = tmp_param = NULL;
36593659
ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(pvalue), key, disp_data) {
3660+
if (key == NULL) continue;
36603661
disp_param = mail_newbody_parameter();
36613662
disp_param->attribute = cpystr(ZSTR_VAL(key));
36623663
convert_to_string_ex(disp_data);
@@ -3689,6 +3690,7 @@ PHP_FUNCTION(imap_mail_compose)
36893690
if (Z_TYPE_P(pvalue) == IS_ARRAY) {
36903691
disp_param = tmp_param = NULL;
36913692
ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(pvalue), key, disp_data) {
3693+
if (key == NULL) continue;
36923694
disp_param = mail_newbody_parameter();
36933695
disp_param->attribute = cpystr(ZSTR_VAL(key));
36943696
convert_to_string_ex(disp_data);
@@ -3757,6 +3759,7 @@ PHP_FUNCTION(imap_mail_compose)
37573759
if (Z_TYPE_P(pvalue) == IS_ARRAY) {
37583760
disp_param = tmp_param = NULL;
37593761
ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(pvalue), key, disp_data) {
3762+
if (key == NULL) continue;
37603763
disp_param = mail_newbody_parameter();
37613764
disp_param->attribute = cpystr(ZSTR_VAL(key));
37623765
convert_to_string_ex(disp_data);
@@ -3789,6 +3792,7 @@ PHP_FUNCTION(imap_mail_compose)
37893792
if (Z_TYPE_P(pvalue) == IS_ARRAY) {
37903793
disp_param = tmp_param = NULL;
37913794
ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(pvalue), key, disp_data) {
3795+
if (key == NULL) continue;
37923796
disp_param = mail_newbody_parameter();
37933797
disp_param->attribute = cpystr(ZSTR_VAL(key));
37943798
convert_to_string_ex(disp_data);

ext/imap/tests/bug80213.phpt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
--TEST--
2+
Bug #80213 (imap_mail_compose() segfaults on certain $bodies)
3+
--SKIPIF--
4+
<?php
5+
if (!extension_loaded('imap')) die('skip imap extension not available');
6+
?>
7+
--FILE--
8+
<?php
9+
$envelope = [];
10+
$body = [[
11+
'type.parameters' => ['param'],
12+
'disposition' => ['disp'],
13+
], [
14+
'type.parameters' => ['param'],
15+
'disposition' => ['disp'],
16+
]];
17+
imap_mail_compose($envelope, $body);
18+
echo "done\n";
19+
?>
20+
--EXPECT--
21+
done

0 commit comments

Comments
 (0)