This patch adds the ability to add multiple binaries to a generated
profile and have the ldd auto-generation of rules occur on it. It
also kills all testcase usage of $dynlibs, which had stopped being
generated by prologue.inc in a prior patch.
---
tests/regression/apparmor/capabilities.sh | 7 +----
tests/regression/apparmor/changehat_misc.sh | 6 -----
tests/regression/apparmor/environ.sh | 2 -
tests/regression/apparmor/mkprofile.pl | 14 +++++++++++
tests/regression/apparmor/sd_flags.sh | 33 +++++++++++++---------------
5 files changed, 33 insertions(+), 29 deletions(-)
Index: b/tests/regression/apparmor/mkprofile.pl
===================================================================
--- a/tests/regression/apparmor/mkprofile.pl
+++ b/tests/regression/apparmor/mkprofile.pl
@@ -121,7 +121,7 @@ sub gen_elf_binary($) {
sub gen_binary($) {
my $bin = shift;
- gen_file("$bin:r");
+ gen_file("$bin:rix");
my $hashbang = head($bin);
if ($hashbang && $hashbang =~ /^#!\s*(\S+)/) {
@@ -199,6 +199,16 @@ sub gen_hat($) {
}
}
+sub gen_addimage($) {
+ my $rule = shift;
+ my @rules = split (/:/, $rule);
+ if (@rules != 2) {
+ (!$nowarn) && print STDERR "Warning: invalid addimage description '$rule',
ignored\n";
+ } else {
+ gen_binary($rules[1]);
+ }
+}
+
my $bin = shift @ARGV;
!(-e $bin || $nowarn) && print STDERR "Warning: execname '$bin': no such file
or directory\n";
@@ -220,6 +230,8 @@ for my $rule (@ARGV) {
gen_flag($rule);
} elsif ($rule =~ /^hat:/) {
gen_hat($rule);
+ } elsif ($rule =~ /^addimage:/) {
+ gen_addimage($rule);
} else {
gen_file($rule);
}
Index: b/tests/regression/apparmor/changehat_misc.sh
===================================================================
--- a/tests/regression/apparmor/changehat_misc.sh
+++ b/tests/regression/apparmor/changehat_misc.sh
@@ -75,13 +75,9 @@ echo
echo "*** A 'Killed' message from bash is expected for the following test"
runchecktest "CHANGEHAT (bad token)" signal9 ${subtest}
-# Attempt to changehat out of a profile when the magic token is 0
-# ugh, need dynlibs from open test
-settest open
-open_dynlibs=${dynlibs}
settest changehat_wrapper
-genprofile hat:open ${dynlibs} ${bin}/open:rix ${file}:${okperm}
+genprofile hat:open addimage:${bin}/open ${file}:${okperm}
runchecktest "CHANGEHAT (noexit subprofile (token=0))" pass --token=0 open
${file}
runchecktest "CHANGEHAT (exit noexit subprofile (token=0))" fail --token=0
--exit_hat open ${file}
Index: b/tests/regression/apparmor/environ.sh
===================================================================
--- a/tests/regression/apparmor/environ.sh
+++ b/tests/regression/apparmor/environ.sh
@@ -69,7 +69,7 @@ genprofile ${helper_sh}:Px -- image=${he
runchecktest "ENVIRON (shell script): Px & regular env" pass ${helper_sh}
FOO=BAR
runchecktest "ENVIRON (shell script): Px & sensitive env" fail ${helper_sh}
LD_LIBRARY_PATH=.
-genprofile ${helper_sh}:rix /bin/bash:rix "/lib*/lib*:mr"
+genprofile addimage:${helper_sh}
runchecktest "ENVIRON (shell script): ix & regular env" pass ${helper_sh}
FOO=BAR
runchecktest "ENVIRON (shell script): ix & sensitive env" pass ${helper_sh}
LD_LIBRARY_PATH=.
Index: b/tests/regression/apparmor/capabilities.sh
===================================================================
--- a/tests/regression/apparmor/capabilities.sh
+++ b/tests/regression/apparmor/capabilities.sh
@@ -108,11 +108,8 @@ for TEST in ${TESTS} ; do
# okay, now check to see if the capability functions from within
# a subprofile.
- # Eww, this is ugly. subprofile tests depend on the internal
- # variable dynlibs defined by prologue.inc::settest
- test_dynlibs=${dynlibs}
settest ${testwrapper}
- genprofile hat:${TEST} ${test_dynlibs} ${bin}/${TEST}:rix ${my_entries}
+ genprofile hat:${TEST} addimage:${bin}/${TEST} ${my_entries}
runchecktest "${TEST} changehat -- no caps" fail ${TEST} ${my_arg}
for cap in ${CAPABILITIES} ; do
if [ "X$(eval echo \${${TEST}_${cap}})" == "XTRUE" ] ; then
@@ -120,7 +117,7 @@ for TEST in ${TESTS} ; do
else
expected_result=fail
fi
- genprofile hat:${TEST} ${test_dynlibs} ${bin}/${TEST}:rix
cap:${cap} ${my_entries}
+ genprofile hat:${TEST} addimage:${bin}/${TEST} cap:${cap}
${my_entries}
runchecktest "${TEST} changehat -- capability ${cap}"
${expected_result} ${TEST} ${my_arg}
done
Index: b/tests/regression/apparmor/sd_flags.sh
===================================================================
--- a/tests/regression/apparmor/sd_flags.sh
+++ b/tests/regression/apparmor/sd_flags.sh
@@ -54,73 +54,72 @@ genprofile flag:audit flag:complain
runchecktest "SD_FLAGS OPEN noaccess (audit,complain)" pass $file
# check for flags on hats...
-open_dynlibs=${dynlibs}
settest changehat_wrapper
# audit alone
# PASS TEST (noflags)
-genprofile hat:open ${dynlibs} ${bin}/open:rix $file:$okperm
+genprofile hat:open addimage:${bin}/open $file:$okperm
runchecktest "SD_FLAGS HAT/OPEN RW (noflags)" pass open $file
# PASS TEST 1 (audit)
-genprofile flag:audit hat:open ${dynlibs} ${bin}/open:rix $file:$okperm
+genprofile flag:audit hat:open addimage:${bin}/open $file:$okperm
runchecktest "SD_FLAGS HAT/OPEN RW (audit)" pass open $file
# PASS TEST 2 (audit)
-genprofile hat:open ${dynlibs} ${bin}/open:rix $file:$okperm flag:audit
+genprofile hat:open addimage:${bin}/open $file:$okperm flag:audit
runchecktest "SD_FLAGS HAT/OPEN RW (audit)" pass open $file
# PASS TEST 3 (audit)
-genprofile flag:audit hat:open ${dynlibs} ${bin}/open:rix $file:$okperm
flag:audit
+genprofile flag:audit hat:open addimage:${bin}/open $file:$okperm flag:audit
runchecktest "SD_FLAGS HAT/OPEN RW (audit)" pass open $file
# FAILURE TEST 1 (audit)
-genprofile flag:audit hat:open ${dynlibs} ${bin}/open:rix $file:$badperm1
+genprofile flag:audit hat:open addimage:${bin}/open $file:$badperm1
runchecktest "SD_FLAGS HAT/OPEN R (audit)" fail open $file
# FAILURE TEST 2 (audit)
-genprofile hat:open ${dynlibs} ${bin}/open:rix $file:$badperm1 flag:audit
+genprofile hat:open addimage:${bin}/open $file:$badperm1 flag:audit
runchecktest "SD_FLAGS HAT/OPEN R (audit)" fail open $file
# FAILURE TEST 3 (audit)
-genprofile flag:audit hat:open ${dynlibs} ${bin}/open:rix $file:$badperm1
flag:audit
+genprofile flag:audit hat:open addimage:${bin}/open $file:$badperm1 flag:audit
runchecktest "SD_FLAGS HAT/OPEN R (audit)" fail open $file
# complain alone
# PASS TEST 1 (complain)
-genprofile flag:complain hat:open ${dynlibs} ${bin}/open:rix $file:$okperm
+genprofile flag:complain hat:open addimage:${bin}/open $file:$okperm
runchecktest "SD_FLAGS HAT/OPEN RW (complain)" pass open $file
# PASS TEST 2 (complain)
-genprofile hat:open ${dynlibs} ${bin}/open:rix $file:$okperm flag:complain
+genprofile hat:open addimage:${bin}/open $file:$okperm flag:complain
runchecktest "SD_FLAGS HAT/OPEN RW (complain)" pass open $file
# PASS TEST 3 (complain)
-genprofile flag:complain hat:open ${dynlibs} ${bin}/open:rix $file:$okperm
flag:complain
+genprofile flag:complain hat:open addimage:${bin}/open $file:$okperm
flag:complain
runchecktest "SD_FLAGS HAT/OPEN RW (complain)" pass open $file
# FAILURE TEST 1 (complain)
-genprofile flag:complain hat:open ${dynlibs} ${bin}/open:rix $file:$badperm1
+genprofile flag:complain hat:open addimage:${bin}/open $file:$badperm1
runchecktest "SD_FLAGS HAT/OPEN R (complain)" fail open $file
# PASS TEST 4 (complain)
-genprofile hat:open ${dynlibs} ${bin}/open:rix $file:$badperm1 flag:complain
+genprofile hat:open addimage:${bin}/open $file:$badperm1 flag:complain
runchecktest "SD_FLAGS HAT/OPEN R (complain)" pass open $file
# PASS TEST 5 (complain)
-genprofile flag:complain hat:open ${dynlibs} ${bin}/open:rix $file:$badperm1
flag:complain
+genprofile flag:complain hat:open addimage:${bin}/open $file:$badperm1
flag:complain
runchecktest "SD_FLAGS HAT/OPEN R (complain)" pass open $file
# PASS TEST 6 (complain) no hat defined
-genprofile flag:complain
+genprofile flag:complain
runchecktest "SD_FLAGS HAT/OPEN R (complain)" pass open $file
# audit + complain
# PASS TEST 3 (audit+complain)
-genprofile flag:audit hat:open ${dynlibs} ${bin}/open:rix $file:$badperm1
flag:complain
+genprofile flag:audit hat:open addimage:${bin}/open $file:$badperm1
flag:complain
runchecktest "SD_FLAGS HAT/OPEN RW (audit+complain)" pass open $file
# FAILURE TEST 3 (complain+audit)
-genprofile flag:complain hat:open ${dynlibs} ${bin}/open:rix $file:$badperm1
flag:audit
+genprofile flag:complain hat:open addimage:${bin}/open $file:$badperm1
flag:audit
runchecktest "SD_FLAGS HAT/OPEN R (complain+audit)" fail open $file
--
AppArmor mailing list
[email protected]
Modify settings or unsubscribe at:
https://lists.ubuntu.com/mailman/listinfo/apparmor