From ea08ba005b7a3a3de379fec3c173fa9c21d81fa7 Mon Sep 17 00:00:00 2001 From: Christian Göttsche Date: Mon, 27 May 2024 22:40:33 +0200 Subject: Ensure to inject php-stream filter also on stream_wrapper_restore() Not sure this is needed, but better safe than sorry. --- src/sp_wrapper.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src') diff --git a/src/sp_wrapper.c b/src/sp_wrapper.c index 54a3a7a..174c967 100644 --- a/src/sp_wrapper.c +++ b/src/sp_wrapper.c @@ -188,12 +188,30 @@ PHP_FUNCTION(sp_stream_wrapper_register) { } } +PHP_FUNCTION(sp_stream_wrapper_restore) { + zif_handler orig_handler; + zend_string *protocol_name = NULL; + zval *params = NULL; + uint32_t param_count = 0; + + zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS(), "S*", &protocol_name, ¶ms, ¶m_count); + orig_handler = zend_hash_str_find_ptr(SPG(sp_internal_functions_hook), ZEND_STRL("stream_wrapper_restore")); + orig_handler(INTERNAL_FUNCTION_PARAM_PASSTHRU); + + if (protocol_name && !strcasecmp(ZSTR_VAL(protocol_name), "php")) { + sp_reregister_php_wrapper(); + } +} + int hook_stream_wrappers() { TSRMLS_FETCH(); HOOK_FUNCTION("stream_wrapper_register", sp_internal_functions_hook, PHP_FN(sp_stream_wrapper_register)); + HOOK_FUNCTION("stream_wrapper_restore", sp_internal_functions_hook, + PHP_FN(sp_stream_wrapper_restore)); + sp_reregister_php_wrapper(); return SUCCESS; -- cgit v1.3