1
0
mirror of https://github.com/php/php-src.git synced 2026-04-01 21:22:13 +02:00

Fix #80223: imap_mail_compose() leaks envelope on malformed bodies

We have to clean up even on failure.

Closes GH-6322.
This commit is contained in:
Christoph M. Becker
2020-10-12 13:26:38 +02:00
parent 0d022ddf03
commit c1962e900a
3 changed files with 21 additions and 2 deletions

2
NEWS
View File

@@ -13,6 +13,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)
- MySQLnd:
. Fixed bug #80115 (mysqlnd.debug doesn't recognize absolute paths with

View File

@@ -3622,7 +3622,8 @@ PHP_FUNCTION(imap_mail_compose)
if (Z_TYPE_P(data) != IS_ARRAY) {
php_error_docref(NULL, E_WARNING, "body parameter must be a non-empty array");
RETURN_FALSE;
RETVAL_FALSE;
goto done;
}
SEPARATE_ARRAY(data);
@@ -3824,7 +3825,8 @@ PHP_FUNCTION(imap_mail_compose)
if (first) {
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)) {

View File

@@ -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