]> granicus.if.org Git - php/commitdiff
- Fixed error_log() to be binary safe when using message_type 3 (message appended...
authorJani Taskinen <jani@php.net>
Sun, 22 Nov 2009 18:31:01 +0000 (18:31 +0000)
committerJani Taskinen <jani@php.net>
Sun, 22 Nov 2009 18:31:01 +0000 (18:31 +0000)
ext/standard/basic_functions.c
ext/standard/basic_functions.h

index 03c970476275a7828153f06a6268c991df15da95..3e699380ffd9242226f9585c8f482b13dc5c0503 100644 (file)
@@ -4596,7 +4596,7 @@ PHP_FUNCTION(error_log)
                opt_err = erropt;
        }
 
-       if (_php_error_log(opt_err, message, opt, headers TSRMLS_CC) == FAILURE) {
+       if (_php_error_log_ex(opt_err, message, message_len, opt, headers TSRMLS_CC) == FAILURE) {
                RETURN_FALSE;
        }
 
@@ -4604,17 +4604,22 @@ PHP_FUNCTION(error_log)
 }
 /* }}} */
 
+/* For BC (not binary-safe!) */
 PHPAPI int _php_error_log(int opt_err, char *message, char *opt, char *headers TSRMLS_DC) /* {{{ */
 {
-       php_stream *stream = NULL;
+       return _php_error_log_ex(opt_err, message, (opt_err == 3) ? strlen(message) : 0, opt, headers TSRMLS_CC);
+}
+/* }}} */
 
-       switch (opt_err) {
+PHPAPI int _php_error_log_ex(int opt_err, char *message, int message_len, char *opt, char *headers TSRMLS_DC) /* {{{ */
+{
+       php_stream *stream = NULL;
 
+       switch (opt_err)
+       {
                case 1:         /*send an email */
-                       {
-                               if (!php_mail(opt, "PHP error_log message", message, headers, NULL TSRMLS_CC)) {
-                                       return FAILURE;
-                               }
+                       if (!php_mail(opt, "PHP error_log message", message, headers, NULL TSRMLS_CC)) {
+                               return FAILURE;
                        }
                        break;
 
@@ -4625,11 +4630,13 @@ PHPAPI int _php_error_log(int opt_err, char *message, char *opt, char *headers T
 
                case 3:         /*save to a file */
                        stream = php_stream_open_wrapper(opt, "a", IGNORE_URL | REPORT_ERRORS, NULL);
-                       if (!stream)
+                       if (!stream) {
                                return FAILURE;
-                       php_stream_write(stream, message, strlen(message));
+                       }
+                       php_stream_write(stream, message, message_len);
                        php_stream_close(stream);
                        break;
+
                case 4: /* send to SAPI */
                        if (sapi_module.log_message) {
                                sapi_module.log_message(message);
@@ -4637,6 +4644,7 @@ PHPAPI int _php_error_log(int opt_err, char *message, char *opt, char *headers T
                                return FAILURE;
                        }
                        break;
+
                default:
                        php_log_err(message TSRMLS_CC);
                        break;
index a1fe348550120e86e96dbcb2545acc2b06c56676..c14348877f0a2dbe23871ccdcd034110c6c5404d 100644 (file)
@@ -144,7 +144,9 @@ PHP_RSHUTDOWN_FUNCTION(user_filters);
 PHP_FUNCTION(request_set_encoding);
 PHP_FUNCTION(request_had_errors);
 
+/* Left for BC (not binary safe!) */
 PHPAPI int _php_error_log(int opt_err, char *message, char *opt, char *headers TSRMLS_DC);
+PHPAPI int _php_error_log_ex(int opt_err, char *message, int message_len, char *opt, char *headers TSRMLS_DC);
 PHPAPI char *php_get_current_user(void);
 PHPAPI int php_prefix_varname(zval *result, zval *prefix, zstr var_name, int var_name_len, int var_name_type, zend_bool add_underscore TSRMLS_DC);