diff options
author | Stanislav Malyshev <stas@php.net> | 2015-06-28 18:53:19 -0700 |
---|---|---|
committer | Stanislav Malyshev <stas@php.net> | 2015-06-28 20:18:56 -0700 |
commit | cd9c39d77ce22e5e377f9f23474c20374d76a10a (patch) | |
tree | 3895cb26b868617c14cc4e009281f918352adfaa | |
parent | 921544cad96de235c451b5174d0669e02c76258b (diff) | |
parent | d263ecd8640697d6cde4b71ec722e8a2e5022dcf (diff) | |
download | php-git-cd9c39d77ce22e5e377f9f23474c20374d76a10a.tar.gz |
Merge branch 'pull-request/1350' into PHP-5.4
* pull-request/1350:
Move strlen() check to php_mail_detect_multiple_crlf()
Fixed Bug #69874 : Can't set empty additional_headers for mail()
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | ext/standard/mail.c | 6 | ||||
-rw-r--r-- | ext/standard/tests/mail/bug69874.phpt | 42 | ||||
-rw-r--r-- | ext/standard/tests/mail/bug69874_2.phpt | 43 |
4 files changed, 90 insertions, 3 deletions
@@ -4,6 +4,8 @@ PHP NEWS - Core: . Fixed bug #69768 (escapeshell*() doesn't cater to !). (cmb) + . Fixed bug #69874 (Can't set empty additional_headers for mail()), regression + from fix to bug #68776. (Yasuo) 11 Jun 2015 PHP 5.4.42 diff --git a/ext/standard/mail.c b/ext/standard/mail.c index 448013a472..75bd423f8d 100644 --- a/ext/standard/mail.c +++ b/ext/standard/mail.c @@ -225,7 +225,7 @@ static int php_mail_detect_multiple_crlf(char *hdr) { /* This function detects multiple/malformed multiple newlines. */ size_t len; - if (!hdr) { + if (!hdr || !strlen(hdr)) { return 0; } @@ -312,7 +312,7 @@ PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char php_basename(tmp, strlen(tmp), NULL, 0,&f, &f_len TSRMLS_CC); - if (headers != NULL) { + if (headers != NULL && *headers) { spprintf(&hdr, 0, "X-PHP-Originating-Script: %ld:%s\n%s", php_getuid(TSRMLS_C), f, headers); } else { spprintf(&hdr, 0, "X-PHP-Originating-Script: %ld:%s", php_getuid(TSRMLS_C), f); @@ -420,7 +420,7 @@ PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not execute mail delivery program '%s'", sendmail_path); #if PHP_SIGCHILD if (sig_handler) { - signal(SIGCHLD, sig_handler); + signal(SIGCHLD, sig_handler); } #endif MAIL_RET(0); diff --git a/ext/standard/tests/mail/bug69874.phpt b/ext/standard/tests/mail/bug69874.phpt new file mode 100644 index 0000000000..a952a73bdc --- /dev/null +++ b/ext/standard/tests/mail/bug69874.phpt @@ -0,0 +1,42 @@ +--TEST-- +Bug #69874: Null addtional_headers does not send mail +--INI-- +sendmail_path=tee mailBasic.out >/dev/null +mail.add_x_header = Off +--SKIPIF-- +<?php +if(substr(PHP_OS, 0, 3) == "WIN") + die("skip Won't run on Windows"); +?> +--FILE-- +<?php +/* Prototype : int mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]]) + * Description: Send an email message + * Source code: ext/standard/mail.c + * Alias to functions: + */ + +echo "*** Testing mail() : send email without additional headers ***\n"; + +// Initialise all required variables +$to = 'user@company.com'; +$subject = 'Test Subject'; +$message = 'A Message'; + +$outFile = "mailBasic.out"; +@unlink($outFile); + +var_dump( mail($to, $subject, $message) ); +echo file_get_contents($outFile); +unlink($outFile); + +?> +===DONE=== +--EXPECTF-- +*** Testing mail() : send email without additional headers *** +bool(true) +To: user@company.com +Subject: Test Subject + +A Message +===DONE=== diff --git a/ext/standard/tests/mail/bug69874_2.phpt b/ext/standard/tests/mail/bug69874_2.phpt new file mode 100644 index 0000000000..53d991a26b --- /dev/null +++ b/ext/standard/tests/mail/bug69874_2.phpt @@ -0,0 +1,43 @@ +--TEST-- +Bug #69874: Null addtional_headers does not send mail +--INI-- +sendmail_path=tee mailBasic.out >/dev/null +mail.add_x_header = On +--SKIPIF-- +<?php +if(substr(PHP_OS, 0, 3) == "WIN") + die("skip Won't run on Windows"); +?> +--FILE-- +<?php +/* Prototype : int mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]]) + * Description: Send an email message + * Source code: ext/standard/mail.c + * Alias to functions: + */ + +echo "*** Testing mail() : send email without additional headers ***\n"; + +// Initialise all required variables +$to = 'user@company.com'; +$subject = 'Test Subject'; +$message = 'A Message'; + +$outFile = "mailBasic.out"; +@unlink($outFile); + +var_dump( mail($to, $subject, $message, '') ); +echo file_get_contents($outFile); +unlink($outFile); + +?> +===DONE=== +--EXPECTF-- +*** Testing mail() : send email without additional headers *** +bool(true) +To: user@company.com +Subject: Test Subject +X-PHP-Originating-Script: %d:bug69874_2.php + +A Message +===DONE=== |