[apparmor] [PATCH 1/2] parser: Add ability to test the inequality of binary policies
John Johansen
john.johansen at canonical.com
Fri Mar 13 21:28:48 UTC 2015
On 03/13/2015 01:48 PM, Tyler Hicks wrote:
> Previously, we only had the ability to test that binary policy files
> were equal. This patch allows for the testing of binary policy files
> that are not equal.
>
> Signed-off-by: Tyler Hicks <tyhicks at canonical.com>
Acked-by: John Johansen <john.johansen at canonical.com>
> ---
> parser/tst/equality.sh | 45 ++++++++++++++++++++++++++++++++++++---------
> 1 file changed, 36 insertions(+), 9 deletions(-)
>
> diff --git a/parser/tst/equality.sh b/parser/tst/equality.sh
> index 6e1f8c2..1a5d9e5 100755
> --- a/parser/tst/equality.sh
> +++ b/parser/tst/equality.sh
> @@ -32,24 +32,34 @@ hash_binary_policy()
> return $?
> }
>
> -# verify_binary_equality - compares the binary policy of multiple profiles
> -# $1: A short description of the test
> -# $2: The known-good profile
> -# $3..$n: The profiles to compare against $2
> +# verify_binary - compares the binary policy of multiple profiles
> +# $1: Test type (equality or inequality)
> +# $2: A short description of the test
> +# $3: The known-good profile
> +# $4..$n: The profiles to compare against $3
> #
> # Upon failure/error, prints out the test description and profiles that failed
> # and increments $fails or $errors for each failure and error, respectively
> -verify_binary_equality()
> +verify_binary()
> {
> - local desc=$1
> - local good_profile=$2
> + local t=$1
> + local desc=$2
> + local good_profile=$3
> local good_hash
> local ret=0
>
> shift
> shift
> + shift
>
> - printf "Binary equality %s" "$desc"
> + if [ "$t" != "equality" ] && [ "$t" != "inequality" ]
> + then
> + printf "\nERROR: Unknown test mode:\n%s\n\n" "$t" 1>&2
> + ((errors++))
> + return $((ret + 1))
> + fi
> +
> + printf "Binary %s %s" "$t" "$desc"
> good_hash=$(hash_binary_policy "$good_profile")
> if [ $? -ne 0 ]
> then
> @@ -68,13 +78,20 @@ verify_binary_equality()
> "$profile" 1>&2
> ((errors++))
> ((ret++))
> - elif [ "$hash" != "$good_hash" ]
> + elif [ "$t" == "equality" ] && [ "$hash" != "$good_hash" ]
> then
> printf "\nFAIL: Hash values do not match\n" 2>&1
> printf "known-good (%s) != profile-under-test (%s) for the following profile:\n%s\n\n" \
> "$good_hash" "$hash" "$profile" 1>&2
> ((fails++))
> ((ret++))
> + elif [ "$t" == "inequality" ] && [ "$hash" == "$good_hash" ]
> + then
> + printf "\nFAIL: Hash values match\n" 2>&1
> + printf "known-good (%s) == profile-under-test (%s) for the following profile:\n%s\n\n" \
> + "$good_hash" "$hash" "$profile" 1>&2
> + ((fails++))
> + ((ret++))
> fi
> done
>
> @@ -86,6 +103,16 @@ verify_binary_equality()
> return $ret
> }
>
> +verify_binary_equality()
> +{
> + verify_binary "equality" "$@"
> +}
> +
> +verify_binary_inequality()
> +{
> + verify_binary "inequality" "$@"
> +}
> +
> verify_binary_equality "dbus send" \
> "/t { dbus send, }" \
> "/t { dbus write, }" \
>
More information about the AppArmor
mailing list