From fe558092e469f6307458cb0f3ae64ebcebf92b14 Mon Sep 17 00:00:00 2001 From: Andi Gutmans Date: Sat, 11 Mar 2000 16:23:30 +0000 Subject: [PATCH] - Don't load modules which have different debug and ZTS information than PHP() (untested). Not sure how to handle API version. Should it also not load? It probably should but it might bite us at some point. @ Prevent from loading dynamic PHP modules which were compiled with different debug and thread safety modes than PHP, which resulted in a crash (Andi) --- ext/standard/dl.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/ext/standard/dl.c b/ext/standard/dl.c index 369cb36a02..b9bfb288e5 100644 --- a/ext/standard/dl.c +++ b/ext/standard/dl.c @@ -70,6 +70,12 @@ PHP_FUNCTION(dl) #ifdef HAVE_LIBDL +#ifdef ZTS +#define USING_ZTS 1 +#else +#define USING_ZTS 0 +#endif + void php_dl(pval *file,int type,pval *return_value) { void *handle; @@ -126,6 +132,17 @@ void php_dl(pval *file,int type,pval *return_value) RETURN_FALSE; } module_entry = get_module(); + if ((module_entry->zend_debug != ZEND_DEBUG) || (module_entry->zts != USING_ZTS)) { + php_error(E_CORE_WARNING, + "%s: Unable to initialize module\n" + "Module compiled with debug=%d, thread-safety=%d\n" + "PHP compiled with debug=%d, thread-safety=%d\n" + "These options need to match\n", + module_entry->name, module_entry->zend_debug, module_entry->zts, + ZEND_DEBUG, USING_ZTS); + DL_UNLOAD(handle); + RETURN_FALSE; + } module_entry->type = type; module_entry->module_number = zend_next_free_module(); if (module_entry->module_startup_func) { -- 2.50.1