]> granicus.if.org Git - php/commitdiff
MFB:Fixed a bug inside mail() logging code that prevents log file from
authorIlia Alshanetsky <iliaa@php.net>
Tue, 13 Jan 2009 21:29:45 +0000 (21:29 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Tue, 13 Jan 2009 21:29:45 +0000 (21:29 +0000)
existing outside of open_basedir

ext/standard/basic_functions.c
ext/standard/mail.c

index 8a25a677e0ae9bc8b0b265fc413f3b6000edd253..479c4c48590423159ac150a958cdae687615d610 100644 (file)
@@ -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")) {
 
index b6acbe3a70b7d476d369012c6b53d140eb886716..2b954113277ee50c192e17af1e2e7a2c911e6304 100644 (file)
@@ -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)) {