mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Avoid fd leak which appears when using ZEND_HANDLE_FILENAME
This commit is contained in:
parent
b53bc48847
commit
6d97609a31
1 changed files with 10 additions and 2 deletions
|
@ -383,20 +383,28 @@ static int
|
||||||
php_ns_module_main(NSLS_D SLS_DC)
|
php_ns_module_main(NSLS_D SLS_DC)
|
||||||
{
|
{
|
||||||
zend_file_handle file_handle;
|
zend_file_handle file_handle;
|
||||||
|
int fd;
|
||||||
CLS_FETCH();
|
CLS_FETCH();
|
||||||
ELS_FETCH();
|
ELS_FETCH();
|
||||||
PLS_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.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;
|
return NS_ERROR;
|
||||||
}
|
}
|
||||||
php_ns_hash_environment(NSLS_C CLS_CC ELS_CC PLS_CC SLS_CC);
|
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_execute_script(&file_handle CLS_CC ELS_CC PLS_CC);
|
||||||
php_request_shutdown(NULL);
|
php_request_shutdown(NULL);
|
||||||
|
|
||||||
|
close(fd);
|
||||||
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue