add macro to expand object class sets for use in require blocks
This commit is contained in:
		
							parent
							
								
									50f6503452
								
							
						
					
					
						commit
						157c69416f
					
				@ -358,6 +358,33 @@ interface(`domain_getsession_all_domains',`
 | 
			
		||||
	allow $1 domain:process getsession;
 | 
			
		||||
')
 | 
			
		||||
 | 
			
		||||
########################################
 | 
			
		||||
## <summary>
 | 
			
		||||
##	Do not audit attempts to get the attributes
 | 
			
		||||
##	of all domains sockets, for all socket types.
 | 
			
		||||
## </summary>
 | 
			
		||||
## <desc>
 | 
			
		||||
##	<p>
 | 
			
		||||
##	Do not audit attempts to get the attributes
 | 
			
		||||
##	of all domains sockets, for all socket types.
 | 
			
		||||
##	</p>
 | 
			
		||||
##	<p>
 | 
			
		||||
##	This interface was added for PCMCIA cardmgr
 | 
			
		||||
##	and is probably excessive.
 | 
			
		||||
##	</p>
 | 
			
		||||
## </desc>
 | 
			
		||||
## <param name="domain">
 | 
			
		||||
##	Domain to not audit.
 | 
			
		||||
## </param>
 | 
			
		||||
#
 | 
			
		||||
interface(`domain_dontaudit_getattr_all_sockets',`
 | 
			
		||||
	gen_require(`
 | 
			
		||||
		gen_require_set(getattr,socket_class_set)
 | 
			
		||||
	')
 | 
			
		||||
 | 
			
		||||
	dontaudit $1 domain:socket_class_set getattr;
 | 
			
		||||
')
 | 
			
		||||
 | 
			
		||||
########################################
 | 
			
		||||
## <desc>
 | 
			
		||||
##	Do not audit attempts to get the attributes
 | 
			
		||||
 | 
			
		||||
@ -63,8 +63,11 @@ corecmd_exec_sbin(cardmgr_t)
 | 
			
		||||
 | 
			
		||||
domain_use_wide_inherit_fd(cardmgr_t)
 | 
			
		||||
domain_exec_all_entry_files(cardmgr_t)
 | 
			
		||||
# Read /proc/PID directories for all domains (for fuser).
 | 
			
		||||
domain_read_all_domains_state(cardmgr_t)
 | 
			
		||||
# cjp: these look excessive:
 | 
			
		||||
domain_dontaudit_getattr_all_unnamed_pipes(cardmgr_t)
 | 
			
		||||
domain_dontaudit_getattr_all_sockets(cardmgr_t)
 | 
			
		||||
 | 
			
		||||
files_search_home(cardmgr_t)
 | 
			
		||||
files_read_etc_runtime_files(cardmgr_t)
 | 
			
		||||
@ -126,12 +129,7 @@ allow cardmgr_t var_lib_t:file { getattr read };
 | 
			
		||||
# Create device files in /tmp.
 | 
			
		||||
file_type_auto_trans(cardmgr_t, { var_run_t cardmgr_var_run_t device_t tmp_t }, cardmgr_dev_t, { blk_file chr_file })
 | 
			
		||||
 | 
			
		||||
# Read /proc/PID directories for all domains (for fuser).
 | 
			
		||||
can_ps(cardmgr_t, domain)
 | 
			
		||||
 | 
			
		||||
dontaudit cardmgr_t ptyfile:chr_file getattr;
 | 
			
		||||
# cjp: these look excessive:
 | 
			
		||||
dontaudit cardmgr_t domain:socket_class_set getattr;
 | 
			
		||||
 | 
			
		||||
# this goes to apm
 | 
			
		||||
optional_policy(`pcmcia.te',`
 | 
			
		||||
 | 
			
		||||
@ -200,3 +200,26 @@ define(`create_shm_perms', `{ associate getattr setattr create destroy read writ
 | 
			
		||||
# Use (read and write) terminals
 | 
			
		||||
#
 | 
			
		||||
define(`rw_term_perms', `{ getattr read write ioctl }')
 | 
			
		||||
 | 
			
		||||
########################################
 | 
			
		||||
#
 | 
			
		||||
# Expand object class set macros.
 | 
			
		||||
#
 | 
			
		||||
# gen_require_set(permissions,object_class_set)
 | 
			
		||||
#
 | 
			
		||||
# the statement:
 | 
			
		||||
#   gen_require_set({ getattr read },{ foo bar tar })
 | 
			
		||||
#
 | 
			
		||||
# makes:
 | 
			
		||||
#   class foo { getattr read };
 | 
			
		||||
#   class bar { getattr read };
 | 
			
		||||
#   class tar { getattr read };
 | 
			
		||||
#
 | 
			
		||||
# !! This is only used in require blocks. !!
 | 
			
		||||
 | 
			
		||||
define(`gen_require_set',`
 | 
			
		||||
ifelse(regexp($2, `\w'), -1, `', `dnl
 | 
			
		||||
class regexp($2, `\(\w+\)', `\1') $1;
 | 
			
		||||
gen_require_set($1, regexp($2, `\w+\(.*\)', `\1'))dnl
 | 
			
		||||
') dnl
 | 
			
		||||
')
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user