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

Reply via email to