com php-src: fix bug #69833 mcrypt fd caching not working: ext/mcrypt/mcrypt.c
| From: | Anatol Belski | Date: | Tue, 11 Aug 2015 14:49:28 +0000 |
| Subject: | com php-src: fix bug #69833 mcrypt fd caching not working: ext/mcrypt/mcrypt.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-88472@lists.php.net to get a copy of this message | ||
Commit: 80bc2133cd453c9a5981023d27e37bfd845172a1
Author: Anatol Belski <ab@php.net> Tue, 11 Aug 2015 16:49:28 +0200
Parents: 79cd9a18b505e8d77d16abe6ef146d4b4ff02ed9
Branches: PHP-5.6 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=80bc2133cd453c9a5981023d27e37bfd845172a1
Log:
fix bug #69833 mcrypt fd caching not working
Bugs:
https://bugs.php.net/69833
Changed paths:
M ext/mcrypt/mcrypt.c
Diff:
diff --git a/ext/mcrypt/mcrypt.c b/ext/mcrypt/mcrypt.c
index 4654850..5b34112 100644
--- a/ext/mcrypt/mcrypt.c
+++ b/ext/mcrypt/mcrypt.c
@@ -288,6 +288,8 @@ const zend_function_entry mcrypt_functions[] = { /* {{{ */
static PHP_MINFO_FUNCTION(mcrypt);
static PHP_MINIT_FUNCTION(mcrypt);
static PHP_MSHUTDOWN_FUNCTION(mcrypt);
+static PHP_GINIT_FUNCTION(mcrypt);
+static PHP_GSHUTDOWN_FUNCTION(mcrypt);
ZEND_DECLARE_MODULE_GLOBALS(mcrypt)
@@ -300,8 +302,8 @@ zend_module_entry mcrypt_module_entry = {
PHP_MINFO(mcrypt),
NO_VERSION_YET,
PHP_MODULE_GLOBALS(mcrypt),
- NULL,
- NULL,
+ PHP_GINIT(mcrypt),
+ PHP_GSHUTDOWN(mcrypt),
NULL,
STANDARD_MODULE_PROPERTIES_EX
};
@@ -381,6 +383,25 @@ static void php_mcrypt_module_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{
}
/* }}} */
+static PHP_GINIT_FUNCTION(mcrypt)
+{
+ mcrypt_globals->fd[RANDOM] = -1;
+ mcrypt_globals->fd[URANDOM] = -1;
+}
+
+static PHP_GSHUTDOWN_FUNCTION(mcrypt)
+{
+ if (mcrypt_globals->fd[RANDOM] > 0) {
+ close(mcrypt_globals->fd[RANDOM]);
+ mcrypt_globals->fd[RANDOM] = -1;
+ }
+
+ if (mcrypt_globals->fd[URANDOM] > 0) {
+ close(mcrypt_globals->fd[URANDOM]);
+ mcrypt_globals->fd[URANDOM] = -1;
+ }
+}
+
static PHP_MINIT_FUNCTION(mcrypt) /* {{{ */
{
le_mcrypt = zend_register_list_destructors_ex(php_mcrypt_module_dtor, NULL, "mcrypt",
module_number);
@@ -438,9 +459,6 @@ static PHP_MINIT_FUNCTION(mcrypt) /* {{{ */
php_stream_filter_register_factory("mcrypt.*", &php_mcrypt_filter_factory
TSRMLS_CC);
php_stream_filter_register_factory("mdecrypt.*", &php_mcrypt_filter_factory
TSRMLS_CC);
- MCG(fd[RANDOM]) = -1;
- MCG(fd[URANDOM]) = -1;
-
return SUCCESS;
}
/* }}} */
@@ -450,14 +468,6 @@ static PHP_MSHUTDOWN_FUNCTION(mcrypt) /* {{{ */
php_stream_filter_unregister_factory("mcrypt.*" TSRMLS_CC);
php_stream_filter_unregister_factory("mdecrypt.*" TSRMLS_CC);
- if (MCG(fd[RANDOM]) > 0) {
- close(MCG(fd[RANDOM]));
- }
-
- if (MCG(fd[URANDOM]) > 0) {
- close(MCG(fd[URANDOM]));
- }
-
UNREGISTER_INI_ENTRIES();
return SUCCESS;
}