cvs: php4 /ext/standard output.c php_output.h /main main.c /sapi/cgi cgi_main.c
| From: | Zeev Suraski | Date: | Mon, 02 Jul 2001 18:17:11 +0000 |
| Subject: | cvs: php4 /ext/standard output.c php_output.h /main main.c /sapi/cgi cgi_main.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-6065@lists.php.net to get a copy of this message | ||
zeev Mon Jul 2 14:17:11 2001 EDT
Modified files:
/php4/ext/standard output.c php_output.h
/php4/main main.c
/php4/sapi/cgi cgi_main.c
Log:
Fix a major thread safety bug in the output mechanism
@- Fixed a major memory corruption bug in the thread safe version (Zeev)
Index: php4/ext/standard/output.c
diff -u php4/ext/standard/output.c:1.60 php4/ext/standard/output.c:1.61
--- php4/ext/standard/output.c:1.60 Tue Jun 26 14:30:31 2001
+++ php4/ext/standard/output.c Mon Jul 2 14:17:08 2001
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: output.c,v 1.60 2001/06/26 18:30:31 zeev Exp $ */
+/* $Id: output.c,v 1.61 2001/07/02 18:17:08 zeev Exp $ */
#include "php.h"
#include "ext/standard/head.h"
@@ -61,22 +61,24 @@
/* Start output layer */
-PHPAPI void php_output_startup()
+PHPAPI void php_output_startup(void)
{
#ifdef ZTS
output_globals_id = ts_allocate_id(sizeof(php_output_globals), (ts_allocate_ctor)
php_output_init_globals, NULL);
#else
php_output_init_globals(OLS_C);
#endif
+}
+
- {
- OLS_FETCH();
+PHPAPI void php_output_activate(void)
+{
+ OLS_FETCH();
- OG(php_body_write) = php_ub_body_write;
- OG(php_header_write) = sapi_module.ub_write;
- OG(nesting_level) = 0;
- OG(lock) = 0;
- }
+ OG(php_body_write) = php_ub_body_write;
+ OG(php_header_write) = sapi_module.ub_write;
+ OG(nesting_level) = 0;
+ OG(lock) = 0;
}
Index: php4/ext/standard/php_output.h
diff -u php4/ext/standard/php_output.h:1.25 php4/ext/standard/php_output.h:1.26
--- php4/ext/standard/php_output.h:1.25 Wed May 23 12:52:45 2001
+++ php4/ext/standard/php_output.h Mon Jul 2 14:17:09 2001
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_output.h,v 1.25 2001/05/23 16:52:45 andi Exp $ */
+/* $Id: php_output.h,v 1.26 2001/07/02 18:17:09 zeev Exp $ */
#ifndef PHP_OUTPUT_H
#define PHP_OUTPUT_H
@@ -26,6 +26,7 @@
typedef void (*php_output_handler_func_t)(char *output, uint output_len, char **handled_output,
uint *handled_output_len, int mode);
PHPAPI void php_output_startup(void);
+PHPAPI void php_output_activate(void);
void php_output_register_constants(void);
PHPAPI int php_body_write(const char *str, uint str_length);
PHPAPI int php_header_write(const char *str, uint str_length);
Index: php4/main/main.c
diff -u php4/main/main.c:1.370 php4/main/main.c:1.371
--- php4/main/main.c:1.370 Thu Jun 21 09:47:26 2001
+++ php4/main/main.c Mon Jul 2 14:17:09 2001
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: main.c,v 1.370 2001/06/21 13:47:26 zeev Exp $ */
+/* $Id: main.c,v 1.371 2001/07/02 18:17:09 zeev Exp $ */
/* {{{ includes
*/
@@ -613,7 +613,7 @@
PG(during_request_startup) = 1;
- php_output_startup();
+ php_output_activate();
/* initialize global variables */
PG(modules_activated) = 0;
@@ -829,6 +829,7 @@
sapi_module = *sf;
php_output_startup();
+ php_output_activate();
zuf.error_function = php_error_cb;
zuf.printf_function = php_printf;
Index: php4/sapi/cgi/cgi_main.c
diff -u php4/sapi/cgi/cgi_main.c:1.114 php4/sapi/cgi/cgi_main.c:1.115
--- php4/sapi/cgi/cgi_main.c:1.114 Thu Jun 21 10:18:23 2001
+++ php4/sapi/cgi/cgi_main.c Mon Jul 2 14:17:10 2001
@@ -502,6 +502,7 @@
case '?':
no_headers = 1;
php_output_startup();
+ php_output_activate();
SG(headers_sent) = 1;
php_cgi_usage(argv[0]);
php_end_ob_buffers(1);
@@ -566,6 +567,7 @@
case '?':
no_headers = 1;
php_output_startup();
+ php_output_activate();
SG(headers_sent) = 1;
php_cgi_usage(argv[0]);
php_end_ob_buffers(1);
@@ -592,6 +594,7 @@
case 'm': /* list compiled in modules */
php_output_startup();
+ php_output_activate();
SG(headers_sent) = 1;
php_printf("Running PHP %s\n%s\n", PHP_VERSION , get_zend_version());
php_printf("[PHP Modules]\n");