mirror of
https://github.com/php/php-src.git
synced 2026-04-29 19:23:22 +02:00
Fix #47983: mixed LF and CRLF line endings in mail()
Email headers are supposed to be separated with CRLF. Period.
This commit is contained in:
@@ -125,6 +125,7 @@ PHP NEWS
|
||||
is the last char). (Islam Israfilov)
|
||||
. Fixed bug #75902 (str_replace should warn when misused with nested arrays).
|
||||
(Nikita)
|
||||
. Fixed bug #47983 (mixed LF and CRLF line endings in mail()). (cmb)
|
||||
. Made quoting of cmd execution functions consistent. (cmb)
|
||||
|
||||
- tidy:
|
||||
|
||||
+5
-5
@@ -486,7 +486,7 @@ PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char
|
||||
f = php_basename(tmp, strlen(tmp), NULL, 0);
|
||||
|
||||
if (headers != NULL && *headers) {
|
||||
spprintf(&hdr, 0, "X-PHP-Originating-Script: " ZEND_LONG_FMT ":%s\n%s", php_getuid(), ZSTR_VAL(f), headers);
|
||||
spprintf(&hdr, 0, "X-PHP-Originating-Script: " ZEND_LONG_FMT ":%s\r\n%s", php_getuid(), ZSTR_VAL(f), headers);
|
||||
} else {
|
||||
spprintf(&hdr, 0, "X-PHP-Originating-Script: " ZEND_LONG_FMT ":%s", php_getuid(), ZSTR_VAL(f));
|
||||
}
|
||||
@@ -559,12 +559,12 @@ PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char
|
||||
MAIL_RET(0);
|
||||
}
|
||||
#endif
|
||||
fprintf(sendmail, "To: %s\n", to);
|
||||
fprintf(sendmail, "Subject: %s\n", subject);
|
||||
fprintf(sendmail, "To: %s\r\n", to);
|
||||
fprintf(sendmail, "Subject: %s\r\n", subject);
|
||||
if (hdr != NULL) {
|
||||
fprintf(sendmail, "%s\n", hdr);
|
||||
fprintf(sendmail, "%s\r\n", hdr);
|
||||
}
|
||||
fprintf(sendmail, "\n%s\n", message);
|
||||
fprintf(sendmail, "\r\n%s\r\n", message);
|
||||
ret = pclose(sendmail);
|
||||
|
||||
#if PHP_SIGCHILD
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
--TEST--
|
||||
Bug #47983 (mixed LF and CRLF line endings in mail())
|
||||
--INI--
|
||||
sendmail_path={MAIL:bug47983.out}
|
||||
--FILE--
|
||||
<?php
|
||||
var_dump(mail('user@example.com', 'Test Subject', 'A Message', 'KHeaders'));
|
||||
$mail = file_get_contents('bug47983.out');
|
||||
var_dump(preg_match_all('/(?<!\r)\n/', $mail));
|
||||
?>
|
||||
--CLEAN--
|
||||
<?php
|
||||
unlink('bug47983.out');
|
||||
?>
|
||||
--EXPECT--
|
||||
bool(true)
|
||||
int(0)
|
||||
Reference in New Issue
Block a user