tony2001 Thu Nov 17 06:42:41 2005 EDT
Modified files: (Branch: PHP_4_4)
/php-src NEWS
/php-src/main output.c
Log:
fix #35257 (Calling ob_flush after creating an ob callback causes segfault)
***
The issue is 4.x specific and cannot be reproduced in 5.x, because in 5.x we
allocate empty strings, while in 4.x we're using empty_string macro.
***
http://cvs.php.net/diff.php/php-src/NEWS?r1=1.1247.2.920.2.77&r2=1.1247.2.920.2.78&ty=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.1247.2.920.2.77 php-src/NEWS:1.1247.2.920.2.78
--- php-src/NEWS:1.1247.2.920.2.77 Wed Nov 9 10:41:07 2005
+++ php-src/NEWS Thu Nov 17 06:42:35 2005
@@ -3,6 +3,8 @@
?? ??? 2006, Version 4.4.2
- Backport missing imap_mailcompose fixes from 5.X. (Ilia)
- Added missing safe_mode/open_basedir checks in cURL extension. (Ilia)
+- Fixed bug #35257 (Calling ob_flush after creating an ob callback causes
+ segfault). (Tony)
- Fixed bug #35078 (configure does not find ldap_start_tls_s). (Jani)
- Fixed bug #35071 (Wrong fopen mode used in GD safe-mode checks). (Jani)
- Fixed bug #35067, #35063 (key(),current() need to work by reference). (Ilia)
http://cvs.php.net/diff.php/php-src/main/output.c?r1=1.142.2.16.2.1&r2=1.142.2.16.2.2&ty=u
Index: php-src/main/output.c
diff -u php-src/main/output.c:1.142.2.16.2.1
php-src/main/output.c:1.142.2.16.2.2
--- php-src/main/output.c:1.142.2.16.2.1 Wed Aug 24 12:20:12 2005
+++ php-src/main/output.c Thu Nov 17 06:42:40 2005
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: output.c,v 1.142.2.16.2.1 2005/08/24 16:20:12 iliaa Exp $ */
+/* $Id: output.c,v 1.142.2.16.2.2 2005/11/17 11:42:40 tony2001 Exp $ */
#include "php.h"
#include "ext/standard/head.h"
@@ -240,7 +240,7 @@
OG(ob_lock) = 1;
if (call_user_function_ex(CG(function_table), NULL,
OG(active_ob_buffer).output_handler, &alternate_buffer, 2, params, 1, NULL
TSRMLS_CC)==SUCCESS) {
- if (!(Z_TYPE_P(alternate_buffer)==IS_BOOL &&
Z_BVAL_P(alternate_buffer)==0)) {
+ if (alternate_buffer &&
!(Z_TYPE_P(alternate_buffer)==IS_BOOL && Z_BVAL_P(alternate_buffer)==0)) {
convert_to_string_ex(&alternate_buffer);
final_buffer = Z_STRVAL_P(alternate_buffer);
final_buffer_length =
Z_STRLEN_P(alternate_buffer);
@@ -296,7 +296,7 @@
OG(ob_nesting_level)--;
if (send_buffer) {
- if (just_flush) { /* if flush is called prior to proper end,
ensure presence of NUL */
+ if (just_flush && strlen(final_buffer)) { /* if flush is called
prior to proper end, ensure presence of NUL */
final_buffer[final_buffer_length] = '\0';
}
OG(php_body_write)(final_buffer, final_buffer_length TSRMLS_CC);
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php