summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2020-10-12 15:10:27 +0200
committerChristoph M. Becker <cmbecker69@gmx.de>2020-10-12 15:10:38 +0200
commit0443c824a3a716873440c8e239d40c458d966a21 (patch)
tree0a9130db2238d85533818d960ff736d4ce83b6e7
parent5a8958f0f32374e97c18ffa0f11b3e1aac8a7811 (diff)
parent4a469c7e9895360a7c605fbb9ea4e062661b666f (diff)
downloadphp-git-0443c824a3a716873440c8e239d40c458d966a21.tar.gz
Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4: Fix #80223: imap_mail_compose() leaks envelope on malformed bodies
-rw-r--r--NEWS2
-rw-r--r--ext/imap/php_imap.c6
-rw-r--r--ext/imap/tests/bug80223.phpt15
3 files changed, 21 insertions, 2 deletions
diff --git a/NEWS b/NEWS
index 588182a321..6010925956 100644
--- a/NEWS
+++ b/NEWS
@@ -10,6 +10,8 @@ PHP NEWS
. Fixed bug #80213 (imap_mail_compose() segfaults on certain $bodies). (cmb)
. Fixed bug #80215 (imap_mail_compose() may modify by-val parameters). (cmb)
. Fixed bug #80220 (imap_mail_compose() may leak memory). (cmb)
+ . Fixed bug #80223 (imap_mail_compose() leaks envelope on malformed bodies).
+ (cmb)
- Opcache:
. Fixed bug #80184 (Complex expression in while / if statements resolves to
diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c
index f08544284b..0b8093b684 100644
--- a/ext/imap/php_imap.c
+++ b/ext/imap/php_imap.c
@@ -3172,7 +3172,8 @@ PHP_FUNCTION(imap_mail_compose)
if (Z_TYPE_P(data) != IS_ARRAY) {
// TODO ValueError
php_error_docref(NULL, E_WARNING, "body parameter must be a non-empty array");
- RETURN_FALSE;
+ RETVAL_FALSE;
+ goto done;
}
SEPARATE_ARRAY(data);
@@ -3375,7 +3376,8 @@ PHP_FUNCTION(imap_mail_compose)
if (first) {
// TODO ValueError
php_error_docref(NULL, E_WARNING, "body parameter must be a non-empty array");
- RETURN_FALSE;
+ RETVAL_FALSE;
+ goto done;
}
if (bod && bod->type == TYPEMULTIPART && (!bod->nested.part || !bod->nested.part->next)) {
diff --git a/ext/imap/tests/bug80223.phpt b/ext/imap/tests/bug80223.phpt
new file mode 100644
index 0000000000..4acfb8d023
--- /dev/null
+++ b/ext/imap/tests/bug80223.phpt
@@ -0,0 +1,15 @@
+--TEST--
+Bug #80223 (imap_mail_compose() leaks envelope on malformed bodies)
+--SKIPIF--
+<?php
+if (!extension_loaded('imap')) die('skip imap extension not available');
+?>
+--FILE--
+<?php
+imap_mail_compose([], []);
+imap_mail_compose([], [1]);
+?>
+--EXPECTF--
+Warning: imap_mail_compose(): body parameter must be a non-empty array in %s on line %d
+
+Warning: imap_mail_compose(): body parameter must be a non-empty array in %s on line %d