wez Mon Sep 30 06:18:06 2002 EDT
Modified files:
/php4/ext/zlib zlib.c
/php4/main output.c
Log:
Fix infinite recursion bug when using zlib output compression.
Cause: the chunk size is taken from the zlib.output_compression setting,
which is 0 or 1. This causes the block_size for output buffer to be set
to 0 (1 / 2) and thus causes infinite recursion in php_ob_allocate().
Solution: use a value of 0 for the chunk size which will use the default
sizes. Also add a sanity check which will default the block_size to 1
if it ends up as 0.
Index: php4/ext/zlib/zlib.c
diff -u php4/ext/zlib/zlib.c:1.149 php4/ext/zlib/zlib.c:1.150
--- php4/ext/zlib/zlib.c:1.149 Tue Sep 3 18:54:02 2002
+++ php4/ext/zlib/zlib.c Mon Sep 30 06:18:06 2002
@@ -18,7 +18,7 @@
| Jade Nicoletti <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: zlib.c,v 1.149 2002/09/03 22:54:02 sniper Exp $ */
+/* $Id: zlib.c,v 1.150 2002/09/30 10:18:06 wez Exp $ */
#define IS_EXT_MODULE
#ifdef HAVE_CONFIG_H
@@ -230,6 +230,8 @@
ZLIBG(ob_gzhandler_status) = 0;
ZLIBG(ob_gzip_coding) = 0;
if (chunk_size) {
+ if (chunk_size == 1)
+ chunk_size = 0; /* use the default size */
php_enable_output_compression(chunk_size TSRMLS_CC);
}
return SUCCESS;
Index: php4/main/output.c
diff -u php4/main/output.c:1.121 php4/main/output.c:1.122
--- php4/main/output.c:1.121 Mon Sep 23 10:18:42 2002
+++ php4/main/output.c Mon Sep 30 06:18:06 2002
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: output.c,v 1.121 2002/09/23 14:18:42 zeev Exp $ */
+/* $Id: output.c,v 1.122 2002/09/30 10:18:06 wez Exp $ */
#include "php.h"
#include "ext/standard/head.h"
@@ -132,6 +132,8 @@
if (chunk_size) {
initial_size = (chunk_size*3/2);
block_size = chunk_size/2;
+ if (block_size == 0)
+ block_size = 1;
} else {
initial_size = 40*1024;
block_size = 10*1024;
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php