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 <li...@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). 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