mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
commit
486c49dee8
3 changed files with 48 additions and 9 deletions
1
NEWS
1
NEWS
|
@ -8,6 +8,7 @@ PHP NEWS
|
|||
|
||||
- IMAP:
|
||||
. Fixed bug #80239 (imap_rfc822_write_address() leaks memory). (cmb)
|
||||
. Fixed minor regression caused by fixing bug #80220. (cmb)
|
||||
|
||||
- Opcache:
|
||||
. Fixed bug #80255 (Opcache bug (bad condition result) in 8.0.0rc1). (Nikita)
|
||||
|
|
|
@ -3263,15 +3263,19 @@ PHP_FUNCTION(imap_mail_compose)
|
|||
bod->disposition.parameter = disp_param;
|
||||
}
|
||||
}
|
||||
if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "contents.data", sizeof("contents.data") - 1)) != NULL) {
|
||||
convert_to_string_ex(pvalue);
|
||||
bod->contents.text.data = fs_get(Z_STRLEN_P(pvalue) + 1);
|
||||
memcpy(bod->contents.text.data, Z_STRVAL_P(pvalue), Z_STRLEN_P(pvalue)+1);
|
||||
bod->contents.text.size = Z_STRLEN_P(pvalue);
|
||||
if (bod->type == TYPEMESSAGE && bod->subtype && !strcmp(bod->subtype, "RFC822")) {
|
||||
bod->nested.msg = mail_newmsg();
|
||||
} else {
|
||||
bod->contents.text.data = fs_get(1);
|
||||
memcpy(bod->contents.text.data, "", 1);
|
||||
bod->contents.text.size = 0;
|
||||
if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "contents.data", sizeof("contents.data") - 1)) != NULL) {
|
||||
convert_to_string_ex(pvalue);
|
||||
bod->contents.text.data = fs_get(Z_STRLEN_P(pvalue) + 1);
|
||||
memcpy(bod->contents.text.data, Z_STRVAL_P(pvalue), Z_STRLEN_P(pvalue)+1);
|
||||
bod->contents.text.size = Z_STRLEN_P(pvalue);
|
||||
} else {
|
||||
bod->contents.text.data = fs_get(1);
|
||||
memcpy(bod->contents.text.data, "", 1);
|
||||
bod->contents.text.size = 0;
|
||||
}
|
||||
}
|
||||
if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "lines", sizeof("lines") - 1)) != NULL) {
|
||||
bod->size.lines = zval_get_long(pvalue);
|
||||
|
@ -3491,7 +3495,7 @@ PHP_FUNCTION(imap_mail_compose)
|
|||
efree(mystring);
|
||||
mystring=tempstring;
|
||||
} else if (bod) {
|
||||
spprintf(&tempstring, 0, "%s%s%s", mystring, bod->contents.text.data, CRLF);
|
||||
spprintf(&tempstring, 0, "%s%s%s", mystring, bod->contents.text.data ? bod->contents.text.data : "", CRLF);
|
||||
efree(mystring);
|
||||
mystring=tempstring;
|
||||
} else {
|
||||
|
|
34
ext/imap/tests/bug80220.phpt
Normal file
34
ext/imap/tests/bug80220.phpt
Normal file
|
@ -0,0 +1,34 @@
|
|||
--TEST--
|
||||
Bug #80220 (imap_mail_compose() may leak memory) - message/rfc822 regression
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('imap')) die('skip imap extension not available');
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
$bodies = [[
|
||||
'type' => TYPEMESSAGE,
|
||||
'subtype' => 'RFC822',
|
||||
], [
|
||||
'contents.data' => 'asd',
|
||||
]];
|
||||
var_dump(imap_mail_compose([], $bodies));
|
||||
|
||||
$bodies = [[
|
||||
'type' => TYPEMESSAGE,
|
||||
], [
|
||||
'contents.data' => 'asd',
|
||||
]];
|
||||
var_dump(imap_mail_compose([], $bodies));
|
||||
?>
|
||||
--EXPECT--
|
||||
string(53) "MIME-Version: 1.0
|
||||
Content-Type: MESSAGE/RFC822
|
||||
|
||||
|
||||
"
|
||||
string(53) "MIME-Version: 1.0
|
||||
Content-Type: MESSAGE/RFC822
|
||||
|
||||
|
||||
"
|
Loading…
Add table
Add a link
Reference in a new issue