summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJani Taskinen <jani@php.net>2009-11-22 18:31:01 +0000
committerJani Taskinen <jani@php.net>2009-11-22 18:31:01 +0000
commitf395a2e34fa3d9348bda60ecfcab640faa9cab15 (patch)
tree31a0952478e4a4a0ecd7e5c129c2156b3a9199db
parent09cd363e352002de7a0933c5a59726f34a1300a3 (diff)
downloadphp-git-f395a2e34fa3d9348bda60ecfcab640faa9cab15.tar.gz
- Fixed error_log() to be binary safe when using message_type 3 (message appended to file).
-rw-r--r--NEWS2
-rw-r--r--ext/standard/basic_functions.c26
-rw-r--r--ext/standard/basic_functions.h2
3 files changed, 20 insertions, 10 deletions
diff --git a/NEWS b/NEWS
index 7bd421c54c..4c00256343 100644
--- a/NEWS
+++ b/NEWS
@@ -18,12 +18,12 @@ PHP NEWS
- Implemented FR #49253 (added support for libcurl's CERTINFO option).
(Linus Nielsen Feltzing <linus@haxx.se>)
+- Fixed error_log() to be binary safe when using message_type 3. (Jani)
- Fixed unnecessary invocation of setitimer when timeouts have been disabled.
(Arvind Srinivasan)
- Fixed memory leak in extension loading when an error occurs on Windows.
(Pierre)
-
- Fixed bug #50219 (soap call Segmentation fault on a redirected url).
(Pierrick)
- Fixed bug #50212 (crash by ldap_get_option() with LDAP_OPT_NETWORK_TIMEOUT).
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c
index ab46e4b069..b035782dc3 100644
--- a/ext/standard/basic_functions.c
+++ b/ext/standard/basic_functions.c
@@ -4652,7 +4652,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;
}
@@ -4660,17 +4660,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;
@@ -4681,11 +4686,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_WIN | ENFORCE_SAFE_MODE | 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);
@@ -4693,6 +4700,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;
diff --git a/ext/standard/basic_functions.h b/ext/standard/basic_functions.h
index b599442fcf..7501485686 100644
--- a/ext/standard/basic_functions.h
+++ b/ext/standard/basic_functions.h
@@ -141,7 +141,9 @@ PHP_FUNCTION(stream_bucket_new);
PHP_MINIT_FUNCTION(user_filters);
PHP_RSHUTDOWN_FUNCTION(user_filters);
+/* 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 int php_prefix_varname(zval *result, zval *prefix, char *var_name, int var_name_len, zend_bool add_underscore TSRMLS_DC);
#if SIZEOF_INT == 4