From 77cbc325f5feddc3b63b3624bc719e8108b18f07 Mon Sep 17 00:00:00 2001 From: Ilia Alshanetsky Date: Tue, 13 Jan 2009 21:29:45 +0000 Subject: [PATCH] MFB:Fixed a bug inside mail() logging code that prevents log file from existing outside of open_basedir --- ext/standard/basic_functions.c | 1 + ext/standard/mail.c | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 8a25a677e0..479c4c4859 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -5385,6 +5385,7 @@ PHP_FUNCTION(ini_set) if (_CHECK_PATH(varname, varname_len, "error_log") || _CHECK_PATH(varname, varname_len, "java.class.path") || _CHECK_PATH(varname, varname_len, "java.home") || + _CHECK_PATH(varname, varname_len, "mail.log") || _CHECK_PATH(varname, varname_len, "java.library.path") || _CHECK_PATH(varname, varname_len, "vpopmail.directory")) { diff --git a/ext/standard/mail.c b/ext/standard/mail.c index b6acbe3a70..2b95411327 100644 --- a/ext/standard/mail.c +++ b/ext/standard/mail.c @@ -212,6 +212,8 @@ PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char if (mail_log) { char *tmp; int l = spprintf(&tmp, 0, "mail() on [%s:%d]: To: %s -- Headers: %s\n", zend_get_executed_filename(TSRMLS_C), zend_get_executed_lineno(TSRMLS_C), to, hdr ? hdr : ""); + php_stream *stream = php_stream_open_wrapper(mail_log, "a", IGNORE_URL_WIN | REPORT_ERRORS | STREAM_DISABLE_OPEN_BASEDIR, NULL); + if (hdr) { /* find all \r\n instances and replace them with spaces, so a log line is always one line long */ char *p = tmp; while ((p = strpbrk(p, "\r\n"))) { @@ -219,7 +221,10 @@ PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char } tmp[l - 1] = '\n'; } - _php_error_log(3, tmp, mail_log, NULL TSRMLS_CC); + if (stream) { + php_stream_write(stream, tmp, l); + php_stream_close(stream); + } efree(tmp); } if (PG(mail_x_header)) { -- 2.40.0