[apparmor] [PATCH 1/6] tests: Create lists of unix_socket perm tests

Seth Arnold seth.arnold at canonical.com
Sat Sep 6 00:46:19 UTC 2014


On Thu, Sep 04, 2014 at 06:55:41AM -0500, Tyler Hicks wrote:
> Create a list for each category (good server perms, bad server perms,
> good client perms, and bad client perms) of UNIX domain socket tests so
> that they can be looped through.
> 
> This makes it easier to append additional tests to the list based upon
> conditions such as kernel ABI, address type, etc.
> 
> Signed-off-by: Tyler Hicks <tyhicks at canonical.com>

Acked-by: Seth Arnold <seth.arnold at canonical.com>

Thanks

> ---
>  tests/regression/apparmor/unix_socket.sh | 90 +++++++++++++-------------------
>  1 file changed, 35 insertions(+), 55 deletions(-)
> 
> diff --git a/tests/regression/apparmor/unix_socket.sh b/tests/regression/apparmor/unix_socket.sh
> index 3d70886..b4fd59d 100755
> --- a/tests/regression/apparmor/unix_socket.sh
> +++ b/tests/regression/apparmor/unix_socket.sh
> @@ -35,19 +35,6 @@ sockpath_abstract="@apparmor_unix_socket"
>  message=4a0c83d87aaa7afa2baab5df3ee4df630f0046d5bfb7a3080c550b721f401b3b\
>  8a738e1435a3b77aa6482a70fb51c44f20007221b85541b0184de66344d46a4c
>  
> -# v6 requires 'w' and v7 requires 'rw'
> -okserver=w
> -badserver1=r
> -badserver2=
> -if [ "$(have_features policy/versions/v7)" == "true" ] ; then
> -	okserver=rw
> -	badserver2=w
> -fi
> -
> -okclient=rw
> -badclient1=r
> -badclient2=w
> -
>  isabstract()
>  {
>  	[ "${1:0:1}" == "@" ]
> @@ -66,6 +53,19 @@ testsocktype()
>  	local sockpath=$2 # fs path or "@NAME" for an abstract sock
>  	local socktype=$3 # stream, dgram, or seqpacket
>  	local args="$sockpath $socktype $message $client"
> +	local i=0
> +
> +	# assume, by default, that the sock addr is of the pathname type
> +	local okservers=("$sockpath:w")
> +	local badservers=("" "$sockpath:r")
> +	local okclients=("$sockpath:rw")
> +	local badclients=("" "$sockpath:r" "$sockpath:w")
> +
> +	# v6 requires 'w' and v7 requires 'rw'
> +	if [ "$(have_features policy/versions/v7)" == "true" ] ; then
> +		okservers=("$sockpath:rw")
> +		badservers+=("$sockpath:w")
> +	fi
>  
>  	removesocket $sockpath
>  
> @@ -84,57 +84,37 @@ testsocktype()
>  		return
>  	fi
>  
> -	# PASS - server w/ access to the file
> -
> -	genprofile $sockpath:$okserver $client:Ux
> -	runchecktest "$testdesc; confined server w/ access ($okserver)" pass $args
> -	removesocket $sockpath
> -
> -	# FAIL - server w/o access to the file
> -
> -	genprofile $client:Ux
> -	runchecktest "$testdesc; confined server w/o access" fail $args
> -	removesocket $sockpath
> +	for ((i=0; i<${#okservers[@]}; i++)); do
> +		# PASS - server w/ access to the file
>  
> -	# FAIL - server w/ bad access to the file
> -
> -	genprofile $sockpath:$badserver1 $client:Ux
> -	runchecktest "$testdesc; confined server w/ bad access ($badserver1)" fail $args
> -	removesocket $sockpath
> +		genprofile ${okservers[i]} $client:Ux
> +		runchecktest "$testdesc; confined server  ok[$i]" pass $args
> +		removesocket $sockpath
> +	done
>  
> -	# $badserver2 is set to non-null at the top of the test script if the
> -	# kernel advertises ABI v7 or newer
> -	if [ -n "$badserver2" ] ; then
> +	for ((i=0; i<${#badservers[@]}; i++)); do
>  		# FAIL - server w/ bad access to the file
>  
> -		genprofile $sockpath:$badserver2 $client:Ux
> -		runchecktest "$testdesc; confined server w/ bad access ($badserver2)" fail $args
> +		genprofile ${badservers[i]} $client:Ux
> +		runchecktest "$testdesc; confined server bad[$i]" fail $args
>  		removesocket $sockpath
> -	fi
> -
> -	# PASS - client w/ access to the file
> -
> -	genprofile $sockpath:$okserver $client:px -- image=$client $sockpath:$okclient
> -	runchecktest "$testdesc; confined client w/ access ($okclient)" pass $args
> -	removesocket $sockpath
> -
> -	# FAIL - client w/o access to the file
> -
> -	genprofile $sockpath:$okserver $client:px -- image=$client
> -	runchecktest "$testdesc; confined client w/o access" fail $args
> -	removesocket $sockpath
> +	done
>  
> -	# FAIL - client w/ bad access to the file
> +	for ((i=0; i<${#okclients[@]}; i++)); do
> +		# PASS - client w/ access to the file
>  
> -	genprofile $sockpath:$okserver $client:px -- image=$client $sockpath:$badclient1
> -	runchecktest "$testdesc; confined client w/ bad access ($badclient1)" fail $args
> -	removesocket $sockpath
> +		genprofile ${okservers[0]} $client:px -- image=$client ${okclients[i]}
> +		runchecktest "$testdesc; confined client  ok[$i]" pass $args
> +		removesocket $sockpath
> +	done
>  
> -	# FAIL - client w/ bad access to the file
> +	for ((i=0; i<${#badclients[@]}; i++)); do
> +		# FAIL - client w/ bad access to the file
>  
> -	genprofile $sockpath:$okserver $client:px -- image=$client $sockpath:$badclient2
> -	runchecktest "$testdesc; confined client w/ bad access ($badclient2)" fail $args
> -	removesocket $sockpath
> +		genprofile ${okservers[0]} $client:px -- image=$client ${badclients[i]}
> +		runchecktest "$testdesc; confined client bad[$i]" fail $args
> +		removesocket $sockpath
> +	done
>  
>  	removeprofile
>  }
> -- 
> 2.1.0
> 
> 
> -- 
> AppArmor mailing list
> AppArmor at lists.ubuntu.com
> Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/apparmor
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: Digital signature
URL: <https://lists.ubuntu.com/archives/apparmor/attachments/20140905/f92ef3e2/attachment-0001.pgp>


More information about the AppArmor mailing list