From 8353de00398b13f6c94eeab6e2401d2e590543c6 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Sun, 9 May 2021 23:12:07 +0200 Subject: Add some guard to prevent hooking recursion This shouldn't be necessary, but better safe than sorry. --- src/sp_execute.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) (limited to 'src/sp_execute.c') diff --git a/src/sp_execute.c b/src/sp_execute.c index de83a2a..7d078b0 100644 --- a/src/sp_execute.c +++ b/src/sp_execute.c @@ -274,17 +274,23 @@ int hook_execute(void) { TSRMLS_FETCH(); if (NULL == orig_execute_ex && NULL == orig_zend_stream_open) { - /* zend_execute_ex is used for "user" function calls */ - orig_execute_ex = zend_execute_ex; - zend_execute_ex = sp_execute_ex; + if (zend_execute_ex != sp_execute_ex) { + /* zend_execute_ex is used for "user" function calls */ + orig_execute_ex = zend_execute_ex; + zend_execute_ex = sp_execute_ex; + } - /* zend_execute_internal is used for "builtin" functions calls */ - orig_zend_execute_internal = zend_execute_internal; - zend_execute_internal = sp_zend_execute_internal; + if (zend_execute_internal != sp_zend_execute_internal) { + /* zend_execute_internal is used for "builtin" functions calls */ + orig_zend_execute_internal = zend_execute_internal; + zend_execute_internal = sp_zend_execute_internal; + } - /* zend_stream_open_function is used for include-related stuff */ - orig_zend_stream_open = zend_stream_open_function; - zend_stream_open_function = sp_stream_open; + if (zend_stream_open_function != sp_stream_open) { + /* zend_stream_open_function is used for include-related stuff */ + orig_zend_stream_open = zend_stream_open_function; + zend_stream_open_function = sp_stream_open; + } } return SUCCESS; -- cgit v1.3