summaryrefslogtreecommitdiff
path: root/ext/mcrypt/mcrypt.c
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2015-08-09 18:40:29 +0200
committerAnatol Belski <ab@php.net>2015-08-09 18:40:29 +0200
commita94ea9c97a5331d416c6256e5b01645188182054 (patch)
tree92872015bf6976be7f0bb41f88f9391f4fc2849b /ext/mcrypt/mcrypt.c
parent06a19cf218bf422f8a0630636e3e2b58d9a77152 (diff)
downloadphp-git-a94ea9c97a5331d416c6256e5b01645188182054.tar.gz
fix the mcrypt related part of bug #64833
Diffstat (limited to 'ext/mcrypt/mcrypt.c')
-rw-r--r--ext/mcrypt/mcrypt.c36
1 files changed, 23 insertions, 13 deletions
diff --git a/ext/mcrypt/mcrypt.c b/ext/mcrypt/mcrypt.c
index f9cc076d0d..4c8f3a2d05 100644
--- a/ext/mcrypt/mcrypt.c
+++ b/ext/mcrypt/mcrypt.c
@@ -251,6 +251,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)
@@ -263,8 +265,8 @@ zend_module_entry mcrypt_module_entry = {
PHP_MINFO(mcrypt),
PHP_MCRYPT_VERSION,
PHP_MODULE_GLOBALS(mcrypt),
- NULL,
- NULL,
+ PHP_GINIT(mcrypt),
+ PHP_GSHUTDOWN(mcrypt),
NULL,
STANDARD_MODULE_PROPERTIES_EX
};
@@ -346,6 +348,25 @@ static void php_mcrypt_module_dtor(zend_resource *rsrc) /* {{{ */
}
/* }}} */
+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);
@@ -403,9 +424,6 @@ static PHP_MINIT_FUNCTION(mcrypt) /* {{{ */
php_stream_filter_register_factory("mcrypt.*", &php_mcrypt_filter_factory);
php_stream_filter_register_factory("mdecrypt.*", &php_mcrypt_filter_factory);
- MCG(fd[RANDOM]) = -1;
- MCG(fd[URANDOM]) = -1;
-
return SUCCESS;
}
/* }}} */
@@ -415,14 +433,6 @@ static PHP_MSHUTDOWN_FUNCTION(mcrypt) /* {{{ */
php_stream_filter_unregister_factory("mcrypt.*");
php_stream_filter_unregister_factory("mdecrypt.*");
- if (MCG(fd[RANDOM]) > 0) {
- close(MCG(fd[RANDOM]));
- }
-
- if (MCG(fd[URANDOM]) > 0) {
- close(MCG(fd[URANDOM]));
- }
-
UNREGISTER_INI_ENTRIES();
return SUCCESS;
}