X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Fmodule.c;h=0c8b3b3315bb0f38b358383fc4ddcc615465d7ef;hp=38eca72a9eb315e3d01b1db4858b0f80ad5efbae;hb=440ff658995f1378fd74c0101ff6c2b4951ffdf9;hpb=5ec2f9ac17f56aee266dc78b4bf657f2cf0910b1 diff --git a/src/module.c b/src/module.c index 38eca72..0c8b3b3 100644 --- a/src/module.c +++ b/src/module.c @@ -300,6 +300,33 @@ static PHP_MINFO_FUNCTION(psi) DISPLAY_INI_ENTRIES(); } +static void ptr_free(void *ptr) +{ + free(*(void **) ptr); +} + +static PHP_GINIT_FUNCTION(psi) +{ + char *tmp; + struct psi_plist **bl_decls = &psi_globals->blacklist.decls; + + *bl_decls = psi_plist_init(ptr_free); + +#define BL_DECL_ADD(d) \ + tmp = strdup(d); \ + *bl_decls = psi_plist_add(*bl_decls, &tmp) + + BL_DECL_ADD("dlsym"); + BL_DECL_ADD("alloca"); + BL_DECL_ADD("atexit"); + BL_DECL_ADD("_IO_cookie_init"); +} + +static PHP_GSHUTDOWN_FUNCTION(psi) +{ + psi_plist_free(psi_globals->blacklist.decls); +} + static const zend_function_entry psi_functions[] = { PHP_FE(psi_dump, ai_psi_dump) PHP_FE(psi_validate, ai_psi_validate) @@ -321,7 +348,11 @@ zend_module_entry psi_module_entry = { NULL, PHP_MINFO(psi), PHP_PSI_VERSION, - STANDARD_MODULE_PROPERTIES + ZEND_MODULE_GLOBALS(psi), + PHP_GINIT(psi), + PHP_GSHUTDOWN(psi), + NULL, /* post-deactivate */ + STANDARD_MODULE_PROPERTIES_EX }; #ifdef COMPILE_DL_PSI