summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Boerger <helly@php.net>2007-03-27 21:29:15 +0000
committerMarcus Boerger <helly@php.net>2007-03-27 21:29:15 +0000
commit36f0d79848f40530d68deafde6c0e986b0dbbd6a (patch)
tree6dd189ef48cfea8e73a286434a32be529db7d7c7
parent9b63c11d2163068d6ea536e2c4ef6efd6f9ea956 (diff)
downloadphp-git-36f0d79848f40530d68deafde6c0e986b0dbbd6a.tar.gz
- MFH Compatibility with suhosin
-rw-r--r--ext/phar/phar.c6
-rwxr-xr-xext/phar/phar_internal.h1
2 files changed, 6 insertions, 1 deletions
diff --git a/ext/phar/phar.c b/ext/phar/phar.c
index 660650a1af..5d05f0f99f 100644
--- a/ext/phar/phar.c
+++ b/ext/phar/phar.c
@@ -153,6 +153,9 @@ static void destroy_phar_data(void *pDest) /* {{{ */
phar_archive_data *phar_data = *(phar_archive_data **) pDest;
TSRMLS_FETCH();
+ if (PHAR_GLOBALS->request_ends) {
+ return destroy_phar_data_only(pDest);
+ }
zend_hash_apply_with_argument(&(PHAR_GLOBALS->phar_alias_map), phar_unalias_apply, phar_data TSRMLS_CC);
if (--phar_data->refcount < 0) {
phar_destroy_phar_data(phar_data TSRMLS_CC);
@@ -3126,6 +3129,7 @@ PHP_MSHUTDOWN_FUNCTION(phar) /* {{{ */
PHP_RINIT_FUNCTION(phar) /* {{{ */
{
PHAR_GLOBALS->request_done = 0;
+ PHAR_GLOBALS->request_ends = 0;
zend_hash_init(&(PHAR_GLOBALS->phar_fname_map), sizeof(phar_archive_data*), zend_get_hash_value, destroy_phar_data, 0);
zend_hash_init(&(PHAR_GLOBALS->phar_alias_map), sizeof(phar_archive_data*), zend_get_hash_value, NULL, 0);
return SUCCESS;
@@ -3134,8 +3138,8 @@ PHP_RINIT_FUNCTION(phar) /* {{{ */
PHP_RSHUTDOWN_FUNCTION(phar) /* {{{ */
{
+ PHAR_GLOBALS->request_ends = 1;
zend_hash_destroy(&(PHAR_GLOBALS->phar_alias_map));
- PHAR_GLOBALS->phar_fname_map. pDestructor = destroy_phar_data_only;
zend_hash_destroy(&(PHAR_GLOBALS->phar_fname_map));
PHAR_GLOBALS->request_done = 1;
return SUCCESS;
diff --git a/ext/phar/phar_internal.h b/ext/phar/phar_internal.h
index 13ab080437..908b34f7f9 100755
--- a/ext/phar/phar_internal.h
+++ b/ext/phar/phar_internal.h
@@ -103,6 +103,7 @@ ZEND_BEGIN_MODULE_GLOBALS(phar)
zend_bool readonly_orig;
zend_bool require_hash_orig;
int request_done;
+ int request_ends;
ZEND_END_MODULE_GLOBALS(phar)
ZEND_EXTERN_MODULE_GLOBALS(phar)