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

Reply via email to