summaryrefslogtreecommitdiff
path: root/sapi
diff options
context:
space:
mode:
authorSascha Schumann <sas@php.net>1999-11-26 19:01:26 +0000
committerSascha Schumann <sas@php.net>1999-11-26 19:01:26 +0000
commit6d97609a315453f1616c91524e6d565d15fda3a5 (patch)
tree90b538e90f1c6390762745cb097465c7e19978fd /sapi
parentb53bc488470008ca5ab39b81bce2d8c53647db11 (diff)
downloadphp-git-6d97609a315453f1616c91524e6d565d15fda3a5.tar.gz
Avoid fd leak which appears when using ZEND_HANDLE_FILENAME
Diffstat (limited to 'sapi')
-rw-r--r--sapi/aolserver/aolserver.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/sapi/aolserver/aolserver.c b/sapi/aolserver/aolserver.c
index e6b61e802c..7a3ba47430 100644
--- a/sapi/aolserver/aolserver.c
+++ b/sapi/aolserver/aolserver.c
@@ -383,20 +383,28 @@ static int
php_ns_module_main(NSLS_D SLS_DC)
{
zend_file_handle file_handle;
+ int fd;
CLS_FETCH();
ELS_FETCH();
PLS_FETCH();
- file_handle.type = ZEND_HANDLE_FILENAME;
+ file_handle.type = ZEND_HANDLE_FD;
file_handle.filename = SG(request_info).path_translated;
+ file_handle.handle.fd = fd = open(SG(request_info).path_translated, O_RDONLY);
+ if (fd == -1) {
+ return NS_ERROR;
+ }
- if(php_request_startup(CLS_C ELS_CC PLS_CC SLS_CC) == FAILURE) {
+ if (php_request_startup(CLS_C ELS_CC PLS_CC SLS_CC) == FAILURE) {
+ close(fd);
return NS_ERROR;
}
php_ns_hash_environment(NSLS_C CLS_CC ELS_CC PLS_CC SLS_CC);
php_execute_script(&file_handle CLS_CC ELS_CC PLS_CC);
php_request_shutdown(NULL);
+ close(fd);
+
return NS_OK;
}