jani Sun, 22 Nov 2009 18:31:01 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=291144
Log:
- Fixed error_log() to be binary safe when using message_type 3 (message
appended to file).
Changed paths:
U php/php-src/branches/PHP_5_2/NEWS
U php/php-src/branches/PHP_5_2/ext/standard/basic_functions.c
U php/php-src/branches/PHP_5_2/ext/standard/basic_functions.h
U php/php-src/branches/PHP_5_3/NEWS
U php/php-src/branches/PHP_5_3/ext/standard/basic_functions.c
U php/php-src/branches/PHP_5_3/ext/standard/basic_functions.h
U php/php-src/trunk/ext/standard/basic_functions.c
U php/php-src/trunk/ext/standard/basic_functions.h
Modified: php/php-src/branches/PHP_5_2/NEWS
===================================================================
--- php/php-src/branches/PHP_5_2/NEWS 2009-11-22 18:18:02 UTC (rev 291143)
+++ php/php-src/branches/PHP_5_2/NEWS 2009-11-22 18:31:01 UTC (rev 291144)
@@ -6,6 +6,8 @@
- Changed "post_max_size" php.ini directive to allow unlimited post size by
setting it to 0. (Rasmus)
+- Fixed error_log() to be binary safe when using message_type 3. (Jani)
+
- Fixed bug #50219 (soap call Segmentation fault on a redirected url).
(Pierrick)
- Fixed bug #50207 (segmentation fault when concatenating very large strings
Modified: php/php-src/branches/PHP_5_2/ext/standard/basic_functions.c
===================================================================
--- php/php-src/branches/PHP_5_2/ext/standard/basic_functions.c 2009-11-22 18:18:02 UTC (rev 291143)
+++ php/php-src/branches/PHP_5_2/ext/standard/basic_functions.c 2009-11-22 18:31:01 UTC (rev 291144)
@@ -4974,7 +4974,7 @@
PHP_FUNCTION(error_log)
{
zval **string, **erropt = NULL, **option = NULL, **emailhead = NULL;
- int opt_err = 0;
+ int opt_err = 0, message_len = 0;
char *message, *opt = NULL, *headers = NULL;
switch (ZEND_NUM_ARGS()) {
@@ -5018,6 +5018,7 @@
convert_to_string_ex(string);
message = Z_STRVAL_PP(string);
+ message_len = Z_STRLEN_PP(string);
if (erropt != NULL) {
convert_to_long_ex(erropt);
@@ -5034,7 +5035,7 @@
headers = Z_STRVAL_PP(emailhead);
}
- 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;
}
@@ -5042,18 +5043,21 @@
}
/* }}} */
-
+/* For BC (not binary safe!) */
PHPAPI int _php_error_log(int opt_err, char *message, char *opt, char *headers TSRMLS_DC)
{
+ return _php_error_log_ex(opt_err, message, (opt_err == 3) ? strlen(message) : 0, opt, headers TSRMLS_CC);
+}
+
+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) {
-
+ 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;
@@ -5064,11 +5068,13 @@
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);
@@ -5076,6 +5082,7 @@
return FAILURE;
}
break;
+
default:
php_log_err(message TSRMLS_CC);
break;
Modified: php/php-src/branches/PHP_5_2/ext/standard/basic_functions.h
===================================================================
--- php/php-src/branches/PHP_5_2/ext/standard/basic_functions.h 2009-11-22 18:18:02 UTC (rev 291143)
+++ php/php-src/branches/PHP_5_2/ext/standard/basic_functions.h 2009-11-22 18:31:01 UTC (rev 291144)
@@ -135,7 +135,9 @@
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);
#if SIZEOF_INT == 4
/* Most 32-bit and 64-bit systems have 32-bit ints */
Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS 2009-11-22 18:18:02 UTC (rev 291143)
+++ php/php-src/branches/PHP_5_3/NEWS 2009-11-22 18:31:01 UTC (rev 291144)
@@ -18,12 +18,12 @@
- Implemented FR #49253 (added support for libcurl's CERTINFO option).
(Linus Nielsen Feltzing <[email protected]>)
+- 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).
Modified: php/php-src/branches/PHP_5_3/ext/standard/basic_functions.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/basic_functions.c 2009-11-22 18:18:02 UTC (rev 291143)
+++ php/php-src/branches/PHP_5_3/ext/standard/basic_functions.c 2009-11-22 18:31:01 UTC (rev 291144)
@@ -4652,7 +4652,7 @@
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 @@
}
/* }}} */
+/* For BC (not binary-safe!) */
PHPAPI int _php_error_log(int opt_err, char *message, char *opt, char *headers TSRMLS_DC) /* {{{ */
{
+ return _php_error_log_ex(opt_err, message, (opt_err == 3) ? strlen(message) : 0, opt, headers TSRMLS_CC);
+}
+/* }}} */
+
+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) {
-
+ 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 @@
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 @@
return FAILURE;
}
break;
+
default:
php_log_err(message TSRMLS_CC);
break;
Modified: php/php-src/branches/PHP_5_3/ext/standard/basic_functions.h
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/basic_functions.h 2009-11-22 18:18:02 UTC (rev 291143)
+++ php/php-src/branches/PHP_5_3/ext/standard/basic_functions.h 2009-11-22 18:31:01 UTC (rev 291144)
@@ -141,7 +141,9 @@
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
Modified: php/php-src/trunk/ext/standard/basic_functions.c
===================================================================
--- php/php-src/trunk/ext/standard/basic_functions.c 2009-11-22 18:18:02 UTC (rev 291143)
+++ php/php-src/trunk/ext/standard/basic_functions.c 2009-11-22 18:31:01 UTC (rev 291144)
@@ -4596,7 +4596,7 @@
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 @@
}
/* }}} */
+/* For BC (not binary-safe!) */
PHPAPI int _php_error_log(int opt_err, char *message, char *opt, char *headers TSRMLS_DC) /* {{{ */
{
+ return _php_error_log_ex(opt_err, message, (opt_err == 3) ? strlen(message) : 0, opt, headers TSRMLS_CC);
+}
+/* }}} */
+
+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) {
-
+ 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 @@
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 @@
return FAILURE;
}
break;
+
default:
php_log_err(message TSRMLS_CC);
break;
Modified: php/php-src/trunk/ext/standard/basic_functions.h
===================================================================
--- php/php-src/trunk/ext/standard/basic_functions.h 2009-11-22 18:18:02 UTC (rev 291143)
+++ php/php-src/trunk/ext/standard/basic_functions.h 2009-11-22 18:31:01 UTC (rev 291144)
@@ -144,7 +144,9 @@
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);
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php