diff options
author | Anatol Belski <ab@php.net> | 2015-08-09 18:40:29 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2015-08-09 18:40:29 +0200 |
commit | a94ea9c97a5331d416c6256e5b01645188182054 (patch) | |
tree | 92872015bf6976be7f0bb41f88f9391f4fc2849b /ext/mcrypt/mcrypt.c | |
parent | 06a19cf218bf422f8a0630636e3e2b58d9a77152 (diff) | |
download | php-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.c | 36 |
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; } |