X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Fmodule.c;h=1323a9f5b5f616d83ac752a2af17a368a708ebee;hp=10636f918000cea0bdcc14124f09c54f75bf5e75;hb=c9384515a81cb64d345b299908b2852f51bb8e6e;hpb=6ec1a060415f860bc3eb4c74fbce1c43f5aa7e55 diff --git a/src/module.c b/src/module.c index 10636f9..1323a9f 100644 --- a/src/module.c +++ b/src/module.c @@ -133,6 +133,7 @@ static PHP_FUNCTION(psi_validate) struct psi_parser_input *I; struct psi_parser P; struct psi_data D = {0}; + struct psi_validate_scope S = {0}; zend_long flags = 0; #if PHP_DEBUG @@ -155,7 +156,10 @@ static PHP_FUNCTION(psi_validate) psi_parser_parse(&P, I); psi_data_ctor(&D, P.error, P.flags); - RETVAL_BOOL(psi_data_validate(&D, PSI_DATA(&P)) && !P.errors); + psi_validate_scope_ctor(&S); + S.defs = &P.preproc->defs; + RETVAL_BOOL(psi_validate(&S, &D, PSI_DATA(&P)) && !P.errors); + psi_validate_scope_dtor(&S); psi_data_dtor(&D); psi_parser_dtor(&P); free(I); @@ -170,6 +174,7 @@ static PHP_FUNCTION(psi_validate_string) struct psi_parser_input *I; struct psi_parser P; struct psi_data D = {0}; + struct psi_validate_scope S = {0}; zend_long flags = 0; #if PHP_DEBUG @@ -192,7 +197,10 @@ static PHP_FUNCTION(psi_validate_string) psi_parser_parse(&P, I); psi_data_ctor(&D, P.error, P.flags); - RETVAL_BOOL(psi_data_validate(&D, PSI_DATA(&P)) && !P.errors); + psi_validate_scope_ctor(&S); + S.defs = &P.preproc->defs; + RETVAL_BOOL(psi_validate(&S, &D, PSI_DATA(&P)) && !P.errors); + psi_validate_scope_dtor(&S); psi_data_dtor(&D); psi_parser_dtor(&P); free(I); @@ -326,28 +334,39 @@ static PHP_GINIT_FUNCTION(psi) { char *tmp; struct psi_plist **bl_decls = &psi_globals->blacklist.decls; + struct psi_plist **bl_vars = &psi_globals->blacklist.vars; *bl_decls = psi_plist_init(ptr_free); + *bl_vars = psi_plist_init(ptr_free); -#define BL_DECL_ADD(d) \ +#define BL_ADD(D, d) \ tmp = strdup(d); \ - *bl_decls = psi_plist_add(*bl_decls, &tmp) + *D = psi_plist_add(*D, &tmp) +#define BL_DECL_ADD(d) BL_ADD(bl_decls, d) +#define BL_VAR_ADD(d) BL_ADD(bl_vars, d) BL_DECL_ADD("dlsym"); BL_DECL_ADD("alloca"); BL_DECL_ADD("atexit"); BL_DECL_ADD("at_quick_exit"); + + /* missing */ BL_DECL_ADD("_IO_cookie_init"); + BL_DECL_ADD("bindresvport6"); /* va_list as arg */ BL_DECL_ADD("*v*printf"); BL_DECL_ADD("*v*scanf"); + BL_DECL_ADD("vsyslog"); /* LFS/LFO for 32bit */ - BL_DECL_ADD("*stat64"); - BL_DECL_ADD("*statat64"); + BL_DECL_ADD("*stat*64"); + BL_DECL_ADD("*glob*64"); /* Hurd only */ BL_DECL_ADD("getumask"); + + /* using hidden structs */ + BL_VAR_ADD("_IO_2_*"); } static PHP_GSHUTDOWN_FUNCTION(psi)