diff options
author | Sascha Schumann <sas@php.net> | 1999-11-26 19:01:26 +0000 |
---|---|---|
committer | Sascha Schumann <sas@php.net> | 1999-11-26 19:01:26 +0000 |
commit | 6d97609a315453f1616c91524e6d565d15fda3a5 (patch) | |
tree | 90b538e90f1c6390762745cb097465c7e19978fd /sapi | |
parent | b53bc488470008ca5ab39b81bce2d8c53647db11 (diff) | |
download | php-git-6d97609a315453f1616c91524e6d565d15fda3a5.tar.gz |
Avoid fd leak which appears when using ZEND_HANDLE_FILENAME
Diffstat (limited to 'sapi')
-rw-r--r-- | sapi/aolserver/aolserver.c | 12 |
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; } |