From 0176d13988dc9c779051b2e83139f315b0b0b52d Mon Sep 17 00:00:00 2001 From: Chris PeBenito Date: Mon, 5 Dec 2005 16:43:28 +0000 Subject: [PATCH] add check for duplicate interface/template definitions --- refpolicy/Changelog | 1 + refpolicy/policy/support/loadable_module.spt | 70 +++++++++++--------- 2 files changed, 38 insertions(+), 33 deletions(-) diff --git a/refpolicy/Changelog b/refpolicy/Changelog index 6c1fe192..95edd9a9 100644 --- a/refpolicy/Changelog +++ b/refpolicy/Changelog @@ -1,3 +1,4 @@ +- Add check for duplicate interface/template definitions. - Move domain, files, and corecommands modules to kernel layer to resolve some layering inconsistencies. - Move policy build options out of Makefile into build.conf. diff --git a/refpolicy/policy/support/loadable_module.spt b/refpolicy/policy/support/loadable_module.spt index 308dcb6c..77b41a90 100644 --- a/refpolicy/policy/support/loadable_module.spt +++ b/refpolicy/policy/support/loadable_module.spt @@ -25,57 +25,57 @@ define(`policy_module',` # define(`gen_require',` ifdef(`self_contained_policy',`',` - define(`in_gen_require_block') require { $1 } - undefine(`in_gen_require_block') ') ') -############################## -# -# In the future interfaces should be in loadable modules -# -# template(name,rules) -# -define(`template',` - `define(`$1',` -##### begin $1(dollarsstar) - $2 -##### end $1(dollarsstar) - '') -') - # helper function, since m4 wont expand macros # if a line is a comment (#): -define(`policy_m4_comment',`dnl +define(`policy_m4_comment',` ##### $2 depth: $1 ')dnl +############################## +# +# In the future interfaces should be in loadable modules +# +# template(name,rules) +# +define(`template',` dnl + ifdef(`$1',`errprint(__file__:__line__`: duplicate definition of $1(). Original definition on '$1. __endline__)',`define(`$1',__line__)') dnl + `define(`$1',` dnl + define(`policy_temp',incr(policy_call_depth)) dnl + pushdef(`policy_call_depth',policy_temp) dnl + undefine(`policy_temp') dnl + policy_m4_comment(policy_call_depth,begin `$1'(dollarsstar)) dnl + $2 dnl + define(`policy_temp',decr(policy_call_depth)) dnl + pushdef(`policy_call_depth',policy_temp) dnl + undefine(`policy_temp') dnl + policy_m4_comment(policy_call_depth,end `$1'(dollarsstar)) dnl + '') +') + ############################## # # In the future interfaces should be in loadable modules # # interface(name,rules) # -define(`interface',` - `define(`$1',` - - define(`policy_temp',incr(policy_call_depth)) - pushdef(`policy_call_depth',policy_temp) - undefine(`policy_temp') - - policy_m4_comment(policy_call_depth,begin `$1'(dollarsstar)) - +define(`interface',` dnl + ifdef(`$1',`errprint(__file__:__line__`: duplicate definition of $1(). Original definition on '$1. __endline__)',`define(`$1',__line__)') dnl + `define(`$1',` dnl + define(`policy_temp',incr(policy_call_depth)) dnl + pushdef(`policy_call_depth',policy_temp) dnl + undefine(`policy_temp') dnl + policy_m4_comment(policy_call_depth,begin `$1'(dollarsstar)) dnl $2 - - define(`policy_temp',decr(policy_call_depth)) - pushdef(`policy_call_depth',policy_temp) - undefine(`policy_temp') - - policy_m4_comment(policy_call_depth,end `$1'(dollarsstar)) - + define(`policy_temp',decr(policy_call_depth)) dnl + pushdef(`policy_call_depth',policy_temp) dnl + undefine(`policy_temp') dnl + policy_m4_comment(policy_call_depth,end `$1'(dollarsstar)) dnl '') ') @@ -145,8 +145,10 @@ define(`tunable_policy',` ifdef(`self_contained_policy',` if (`$1') { $2 + ifelse(`$3',`',`',` } else { $3 + ') } ',` # structure for tunables @@ -159,8 +161,10 @@ define(`tunable_policy',` if (`$1') { $2 + ifelse(`$3',`',`',` } else { $3 + ') } ') ')