summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2020-01-06 14:48:22 +0100
committerChristoph M. Becker <cmbecker69@gmx.de>2020-01-06 14:48:46 +0100
commit09ebeba1afdfa6dd6695781e441207cd790f0d42 (patch)
tree33b5e1c7fd01d504ae1c6632c9117a84036ed88d
parent68f6ab711323678382d2746e57358d3f57a3446b (diff)
parentae2150692a9a2e0878314385d03826f160e6a76a (diff)
downloadphp-git-09ebeba1afdfa6dd6695781e441207cd790f0d42.tar.gz
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3: Fix #54298: Using empty additional_headers adding extraneous CRLF
-rw-r--r--NEWS2
-rw-r--r--ext/standard/mail.c2
-rw-r--r--ext/standard/tests/mail/bug54298.phpt24
3 files changed, 27 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index 0e4d1b0a24..0a4ccbd28b 100644
--- a/NEWS
+++ b/NEWS
@@ -82,6 +82,8 @@ PHP NEWS
- Standard:
. Fixed bug #79000 (Non-blocking socket stream reports EAGAIN as error).
(Nikita)
+ . Fixed bug #54298 (Using empty additional_headers adding extraneous CRLF).
+ (cmb)
18 Dec 2019, PHP 7.4.1
diff --git a/ext/standard/mail.c b/ext/standard/mail.c
index c1a21c4059..b27923aca1 100644
--- a/ext/standard/mail.c
+++ b/ext/standard/mail.c
@@ -368,7 +368,7 @@ PHP_FUNCTION(mail)
extra_cmd = php_escape_shell_cmd(ZSTR_VAL(extra_cmd));
}
- if (php_mail(to_r, subject_r, message, str_headers ? ZSTR_VAL(str_headers) : NULL, extra_cmd ? ZSTR_VAL(extra_cmd) : NULL)) {
+ if (php_mail(to_r, subject_r, message, str_headers && ZSTR_LEN(str_headers) ? ZSTR_VAL(str_headers) : NULL, extra_cmd ? ZSTR_VAL(extra_cmd) : NULL)) {
RETVAL_TRUE;
} else {
RETVAL_FALSE;
diff --git a/ext/standard/tests/mail/bug54298.phpt b/ext/standard/tests/mail/bug54298.phpt
new file mode 100644
index 0000000000..a2ab9c83ab
--- /dev/null
+++ b/ext/standard/tests/mail/bug54298.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Bug #54298 (Using empty additional_headers adding extraneous CRLF)
+--INI--
+sendmail_path=tee bug54298.eml >/dev/null
+mail.add_x_header = Off
+--SKIPIF--
+<?php
+if (PHP_OS_FAMILY === 'Windows') die("skip Won't run on Windows");
+?>
+--FILE--
+<?php
+var_dump(mail('someuser@example.com', 'testsubj', 'Body part', ''));
+echo file_get_contents('bug54298.eml');
+?>
+--EXPECT--
+bool(true)
+To: someuser@example.com
+Subject: testsubj
+
+Body part
+--CLEAN--
+<?php
+unlink('bug54298.eml');
+?>