cvs: php-src /main SAPI.c
| From: | Antony Dovgal | Date: | Wed, 25 Apr 2007 11:19:10 +0000 |
| Subject: | cvs: php-src /main SAPI.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-44080@lists.php.net to get a copy of this message | ||
tony2001 Wed Apr 25 11:19:10 2007 UTC
Modified files:
/php-src/main SAPI.c
Log:
MFB: Fix crashes when SAPI handlers are overriden in dl()-ed extensions
http://cvs.php.net/viewvc.cgi/php-src/main/SAPI.c?r1=1.222&r2=1.223&diff_format=u
Index: php-src/main/SAPI.c
diff -u php-src/main/SAPI.c:1.222 php-src/main/SAPI.c:1.223
--- php-src/main/SAPI.c:1.222 Mon Apr 16 09:43:52 2007
+++ php-src/main/SAPI.c Wed Apr 25 11:19:10 2007
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: SAPI.c,v 1.222 2007/04/16 09:43:52 dmitry Exp $ */
+/* $Id: SAPI.c,v 1.223 2007/04/25 11:19:10 tony2001 Exp $ */
#include <ctype.h>
#include <sys/stat.h>
@@ -794,6 +794,10 @@
SAPI_API int sapi_register_post_entry(sapi_post_entry *post_entry TSRMLS_DC)
{
+ if (EG(in_execution)) {
+ return FAILURE;
+ }
+
return zend_hash_add(&SG(known_post_content_types),
post_entry->content_type, post_entry->content_type_len+1,
(void *) post_entry, sizeof(sapi_post_entry), NULL);
@@ -801,6 +805,9 @@
SAPI_API void sapi_unregister_post_entry(sapi_post_entry *post_entry TSRMLS_DC)
{
+ if (EG(in_execution)) {
+ return;
+ }
zend_hash_del(&SG(known_post_content_types), post_entry->content_type,
post_entry->content_type_len+1);
}
@@ -808,6 +815,10 @@
SAPI_API int sapi_register_default_post_reader(void (*default_post_reader)(TSRMLS_D))
{
+ TSRMLS_FETCH();
+ if (EG(in_execution)) {
+ return FAILURE;
+ }
sapi_module.default_post_reader = default_post_reader;
return SUCCESS;
}
@@ -815,12 +826,20 @@
SAPI_API int sapi_register_treat_data(void (*treat_data)(int arg, char *str, zval *destArray
TSRMLS_DC))
{
+ TSRMLS_FETCH();
+ if (EG(in_execution)) {
+ return FAILURE;
+ }
sapi_module.treat_data = treat_data;
return SUCCESS;
}
SAPI_API int sapi_register_input_filter(unsigned int (*input_filter)(int arg, char *var, char
**val, unsigned int val_len, unsigned int *new_val_len TSRMLS_DC))
{
+ TSRMLS_FETCH();
+ if (EG(in_execution)) {
+ return FAILURE;
+ }
sapi_module.input_filter = input_filter;
return SUCCESS;
}