Skip to content

Commit c1962e9

Browse files
committed
Fix #80223: imap_mail_compose() leaks envelope on malformed bodies
We have to clean up even on failure. Closes GH-6322.
1 parent 0d022dd commit c1962e9

File tree

3 files changed

+21
-2
lines changed

3 files changed

+21
-2
lines changed

NEWS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ PHP NEWS
1313
. Fixed bug #80213 (imap_mail_compose() segfaults on certain $bodies). (cmb)
1414
. Fixed bug #80215 (imap_mail_compose() may modify by-val parameters). (cmb)
1515
. Fixed bug #80220 (imap_mail_compose() may leak memory). (cmb)
16+
. Fixed bug #80223 (imap_mail_compose() leaks envelope on malformed bodies).
17+
(cmb)
1618

1719
- MySQLnd:
1820
. Fixed bug #80115 (mysqlnd.debug doesn't recognize absolute paths with

ext/imap/php_imap.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3622,7 +3622,8 @@ PHP_FUNCTION(imap_mail_compose)
36223622

36233623
if (Z_TYPE_P(data) != IS_ARRAY) {
36243624
php_error_docref(NULL, E_WARNING, "body parameter must be a non-empty array");
3625-
RETURN_FALSE;
3625+
RETVAL_FALSE;
3626+
goto done;
36263627
}
36273628
SEPARATE_ARRAY(data);
36283629

@@ -3824,7 +3825,8 @@ PHP_FUNCTION(imap_mail_compose)
38243825

38253826
if (first) {
38263827
php_error_docref(NULL, E_WARNING, "body parameter must be a non-empty array");
3827-
RETURN_FALSE;
3828+
RETVAL_FALSE;
3829+
goto done;
38283830
}
38293831

38303832
if (bod && bod->type == TYPEMULTIPART && (!bod->nested.part || !bod->nested.part->next)) {

ext/imap/tests/bug80223.phpt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
--TEST--
2+
Bug #80223 (imap_mail_compose() leaks envelope on malformed bodies)
3+
--SKIPIF--
4+
<?php
5+
if (!extension_loaded('imap')) die('skip imap extension not available');
6+
?>
7+
--FILE--
8+
<?php
9+
imap_mail_compose([], []);
10+
imap_mail_compose([], [1]);
11+
?>
12+
--EXPECTF--
13+
Warning: imap_mail_compose(): body parameter must be a non-empty array in %s on line %d
14+
15+
Warning: imap_mail_compose(): body parameter must be a non-empty array in %s on line %d

0 commit comments

Comments
 (0)