2006-04-11 21:52:54 +00:00
|
|
|
#
|
2006-05-31 21:30:50 +00:00
|
|
|
PROVE=/usr/bin/prove
|
2006-04-11 21:52:54 +00:00
|
|
|
TESTS=simple.pl
|
2010-06-04 18:47:44 -07:00
|
|
|
PARSER_DIR=..
|
|
|
|
PARSER_BIN=apparmor_parser
|
|
|
|
PARSER=$(PARSER_DIR)/$(PARSER_BIN)
|
2011-08-09 01:10:19 -07:00
|
|
|
PROVE_ARG=-f
|
2006-04-11 21:52:54 +00:00
|
|
|
|
2006-05-31 21:30:50 +00:00
|
|
|
ifeq ($(VERBOSE),1)
|
2011-08-09 01:10:19 -07:00
|
|
|
PROVE_ARG+=-v
|
2013-11-27 21:25:06 -08:00
|
|
|
PYTEST_ARG = -v
|
parser: fix compilation failure of deny link rules, expand equality tests
Merge from trunk commits 2909, 2910, 2911, and 2912
BugLink: http://bugs.launchpad.net/bugs/1433829
The apparmor_parser fails to compile deny rules with only link
permissions.
Eg.
deny /f l,
deny l /f,
deny link /f -> /d,
Will all fail to compile with the following assert
apparmor_parser: aare_rules.cc:99: Node* convert_file_perms(int, uint32_t, uint32_t, bool): Assertion `perms != 0' failed.
NOTE: this is a minimal patch a bigger patch that cleans-up and separates
and reorganizes file, link, exec, and change_profile rules is needed
parser: Expand Equality tests
This adds several new equality tests and turned up a couple of more
bugs
https://launchpad.net/bugs/1433829
https://launchpad.net/bugs/1434018
- add link/link subset tests
- add pix, Pix, cix, Cix, pux, Pux, cux, Cux and specified profile
transitions (/f px -> b ...)
- test equality of leading and trailing permission file rules
ie. /foo rw, == rw /foo,
- test that specific x match overrides generic x rule. ie.
/** ix, /foo px, is different than /** ix, /foo ix,
- test that deny removes permission
/f[abc] r, deny /fb r, is differnt than /f[abc] r,
In addition to adding the new tests, it changes the output of the
equality tests, so that if the $verbose variable is not set successful
tests only output a period, with failed tests outputing the full
info. If verbose is set the full test info is output as before.
It also does:
- make the verbose output of equality.sh honor whether or not
the environment variable VERBOSE is set
- thereby making the output verbose when 'make check V=1' or 'make
check VERBOSE=1' is given from within the parser/ directory. This
will make distribution packagers happy when diagnosing build
failures caused by test failures.
- if verbose output is not emitted and the tests were successful, emit
a newline before printing PASS.
- verify audit and audit allow is equal
- verify audit differs from deny and audit deny
- verify deny differs from audit deny
- make the verbose text a little more useful for some cases
- correct overlap exec tests to substitute in looped perms
Signed-off-by: John Johansen <john.johansen@canonical.com>
Signed-off-by: Steve Beattie <steve@nxnw.org>
Acked-by: Seth Arnold <seth.arnold@canonical.com>
2015-03-23 12:43:57 -07:00
|
|
|
else
|
2015-03-31 02:50:40 -07:00
|
|
|
VERBOSE=
|
2006-05-31 21:30:50 +00:00
|
|
|
endif
|
|
|
|
|
2006-04-11 21:52:54 +00:00
|
|
|
all: tests
|
|
|
|
|
2013-12-03 15:37:57 -08:00
|
|
|
.PHONY: tests error_output gen_dbus gen_xtrans parser_sanity caching minimize equality valgrind
|
2013-11-27 21:25:06 -08:00
|
|
|
tests: error_output caching minimize equality parser_sanity
|
2010-12-20 11:53:52 -08:00
|
|
|
|
2013-07-31 09:20:56 -07:00
|
|
|
GEN_TRANS_DIRS=simple_tests/generated_x/ simple_tests/generated_perms_leading/ simple_tests/generated_perms_safe/ simple_tests/generated_dbus
|
2011-08-09 01:10:19 -07:00
|
|
|
|
|
|
|
gen_xtrans: $(GEN_TRANS_DIRS)
|
2010-12-20 11:53:52 -08:00
|
|
|
./gen-xtrans.pl
|
2010-06-04 18:47:44 -07:00
|
|
|
|
2011-08-09 01:10:19 -07:00
|
|
|
$(GEN_TRANS_DIRS):
|
|
|
|
mkdir $@
|
|
|
|
|
2013-07-31 09:20:56 -07:00
|
|
|
gen_dbus: $(GEN_TRANS_DIRS)
|
|
|
|
./gen-dbus.pl
|
|
|
|
|
2010-06-04 18:47:44 -07:00
|
|
|
error_output: $(PARSER)
|
2013-10-15 16:46:18 -07:00
|
|
|
LANG=C $(PARSER) -S -I errors >/dev/null errors/okay.sd
|
2010-06-04 18:47:44 -07:00
|
|
|
LANG=C $(PARSER) -S -I errors 2>&1 >/dev/null errors/single.sd | \
|
|
|
|
grep -q "AppArmor parser error for errors/single.sd in errors/single.sd at line 3: Could not open 'failure'"
|
|
|
|
LANG=C $(PARSER) -S -I errors 2>&1 >/dev/null errors/double.sd | \
|
2010-12-20 13:06:54 -08:00
|
|
|
grep -q "AppArmor parser error for errors/double.sd in errors/includes/busted at line 66: Could not open 'does-not-exist'"
|
2010-06-25 12:43:48 -07:00
|
|
|
LANG=C $(PARSER) -S -I errors 2>&1 >/dev/null errors/modefail.sd | \
|
|
|
|
grep -q "AppArmor parser error for errors/modefail.sd in errors/modefail.sd at line 6: syntax error"
|
|
|
|
LANG=C $(PARSER) -S -I errors 2>&1 >/dev/null errors/multi_include.sd | \
|
|
|
|
grep -q "AppArmor parser error for errors/multi_include.sd in errors/multi_include.sd at line 12: Could not open 'failure'"
|
2010-06-04 18:47:44 -07:00
|
|
|
@echo "Error Output: PASS"
|
|
|
|
|
2013-10-31 12:04:12 -07:00
|
|
|
parser_sanity: $(PARSER) gen_xtrans gen_dbus
|
2012-11-05 17:22:37 -08:00
|
|
|
$(Q)LANG=C APPARMOR_PARSER="$(PARSER)" ${PROVE} ${PROVE_ARG} ${TESTS}
|
2006-04-11 21:52:54 +00:00
|
|
|
|
2010-09-14 12:45:34 -07:00
|
|
|
caching: $(PARSER)
|
2013-11-27 21:25:06 -08:00
|
|
|
LANG=C ./caching.py -p "$(PARSER)" $(PYTEST_ARG)
|
2010-09-14 12:45:34 -07:00
|
|
|
|
2012-03-09 04:20:19 -08:00
|
|
|
minimize: $(PARSER)
|
2012-11-05 17:22:37 -08:00
|
|
|
LANG=C APPARMOR_PARSER="$(PARSER)" ./minimize.sh
|
2012-03-09 04:20:19 -08:00
|
|
|
|
2013-07-31 09:22:11 -07:00
|
|
|
equality: $(PARSER)
|
|
|
|
LANG=C APPARMOR_PARSER="$(PARSER)" ./equality.sh
|
|
|
|
|
2013-10-31 12:04:12 -07:00
|
|
|
valgrind: $(PARSER) gen_xtrans gen_dbus
|
2013-10-15 17:06:26 -07:00
|
|
|
LANG=C ./valgrind_simple.py -p "$(PARSER)" -v simple_tests
|
|
|
|
|
2010-06-04 18:47:44 -07:00
|
|
|
$(PARSER):
|
|
|
|
make -C $(PARSER_DIR) $(PARSER_BIN)
|
2010-12-20 11:53:52 -08:00
|
|
|
|
|
|
|
clean:
|
2011-08-09 01:10:19 -07:00
|
|
|
find $(GEN_TRANS_DIRS) -type f | xargs rm -f
|
2013-12-06 05:31:11 -08:00
|
|
|
rm -f gmon.out
|