From: Ilia Alshanetsky Date: Thu, 29 Jan 2004 15:18:37 +0000 (+0000) Subject: MFH: Apache 2 portion of the fix for bug #25753. X-Git-Tag: php-4.3.5RC2~7 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0bf4ee95b68195714de8f2fb0f6e9272db7f7301;p=php MFH: Apache 2 portion of the fix for bug #25753. --- diff --git a/sapi/apache2filter/sapi_apache2.c b/sapi/apache2filter/sapi_apache2.c index 20b03212c7..3b1212a3fc 100644 --- a/sapi/apache2filter/sapi_apache2.c +++ b/sapi/apache2filter/sapi_apache2.c @@ -429,11 +429,17 @@ static int php_output_filter(ap_filter_t *f, apr_bucket_brigade *bb) TSRMLS_FETCH(); if (f->r->proxyreq) { + zend_try { + zend_ini_deactivate(TSRMLS_C); + } zend_end_try(); return ap_pass_brigade(f->next, bb); } /* handle situations where user turns the engine off */ if (*p == '0') { + zend_try { + zend_ini_deactivate(TSRMLS_C); + } zend_end_try(); return ap_pass_brigade(f->next, bb); } @@ -451,11 +457,17 @@ static int php_output_filter(ap_filter_t *f, apr_bucket_brigade *bb) if (ctx == NULL) { ap_log_rerror(APLOG_MARK, APLOG_ERR|APLOG_NOERRNO, 0, f->r, "php failed to get server context"); + zend_try { + zend_ini_deactivate(TSRMLS_C); + } zend_end_try(); return HTTP_INTERNAL_SERVER_ERROR; } ctx->f = f; /* save whatever filters are after us in the chain. */ if (ctx->request_processed) { + zend_try { + zend_ini_deactivate(TSRMLS_C); + } zend_end_try(); return ap_pass_brigade(f->next, bb); } diff --git a/sapi/apache2handler/sapi_apache2.c b/sapi/apache2handler/sapi_apache2.c index 1c09dcb1ff..f9bd38a108 100644 --- a/sapi/apache2handler/sapi_apache2.c +++ b/sapi/apache2handler/sapi_apache2.c @@ -464,21 +464,33 @@ static int php_handler(request_rec *r) if (strcmp(r->handler, PHP_MAGIC_TYPE) && strcmp(r->handler, PHP_SOURCE_MAGIC_TYPE) && strcmp(r->handler, PHP_SCRIPT)) { /* Check for xbithack in this case. */ if (!AP2(xbithack) || strcmp(r->handler, "text/html") || !(r->finfo.protection & APR_UEXECUTE)) { + zend_try { + zend_ini_deactivate(TSRMLS_C); + } zend_end_try(); return DECLINED; } } /* handle situations where user turns the engine off */ if (!AP2(engine)) { + zend_try { + zend_ini_deactivate(TSRMLS_C); + } zend_end_try(); return DECLINED; } if (r->finfo.filetype == 0) { php_apache_sapi_log_message("script not found or unable to stat"); + zend_try { + zend_ini_deactivate(TSRMLS_C); + } zend_end_try(); return HTTP_NOT_FOUND; } if (r->finfo.filetype == APR_DIR) { php_apache_sapi_log_message("attempt to invoke directory as script"); + zend_try { + zend_ini_deactivate(TSRMLS_C); + } zend_end_try(); return HTTP_FORBIDDEN; }