diff --git a/refpolicy/Changelog b/refpolicy/Changelog index 6c1fe19..95edd9a 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 308dcb6..77b41a9 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') ') ') +# helper function, since m4 wont expand macros +# if a line is a comment (#): +define(`policy_m4_comment',` +##### $2 depth: $1 +')dnl + ############################## # # In the future interfaces should be in loadable modules # # template(name,rules) # -define(`template',` - `define(`$1',` -##### begin $1(dollarsstar) - $2 -##### end $1(dollarsstar) +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 '') ') -# helper function, since m4 wont expand macros -# if a line is a comment (#): -define(`policy_m4_comment',`dnl -##### $2 depth: $1 -')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 + ') } ') ')