Unverified Commit a7ba5e4e by Hervé Beraud Committed by Christian Brauner

apparmor: catch config file opening error

Improve config file error opening management and improve main code block. Execute this python script during CI to avoid regressions Signed-off-by: 's avatarHervé Beraud <hberaud@redhat.com>
parent eb6fdb57
......@@ -27,6 +27,9 @@ script:
- ../configure --enable-tests --with-distro=unknown
- make -j4
- make DESTDIR=$TRAVIS_BUILD_DIR/install install
- cd ..
- ./config/apparmor/lxc-generate-aa-rules.py config/apparmor/container-rules.base
notifications:
email:
recipients:
......
......@@ -3,6 +3,7 @@
import sys
blocks = []
denies = []
#
# blocks is an array of paths under which we want to block by
......@@ -63,28 +64,6 @@ def add_allow(path):
prev.append(n)
prev = n['children']
config = "config"
if len(sys.argv) > 1:
config = sys.argv[1]
with open(config) as f:
for x in f.readlines():
x.strip()
if x[:1] == '#':
continue
try:
(cmd, path) = x.split(' ')
except: # blank line
continue
if cmd == "block":
add_block(path)
elif cmd == "allow":
add_allow(path)
else:
print("Unknown command: %s" % cmd)
sys.exit(1)
denies = []
def collect_chars(children, ref, index):
r = ""
......@@ -126,14 +105,48 @@ def gen_denies(pathsofar, children):
newpath = "%s/%s" % (pathsofar, c['path'])
gen_denies(newpath, c['children'])
for b in blocks:
gen_denies(b['path'], b['children'])
denies.sort()
def main():
config = "config"
if len(sys.argv) > 1:
config = sys.argv[1]
lines = None
try:
with open(config) as f:
lines = f.readlines()
except FileNotFoundError as err:
print("Config file not found")
print(err)
sys.exit(1)
for line in lines:
line.strip()
if line.startswith('#'):
continue
try:
(cmd, path) = line.split(' ')
except: # blank line
continue
if cmd == "block":
add_block(path)
elif cmd == "allow":
add_allow(path)
else:
print("Unknown command: %s" % cmd)
sys.exit(1)
for block in blocks:
gen_denies(block['path'], block['children'])
denies.sort()
genby = " # generated by: lxc-generate-aa-rules.py"
for a in sys.argv[1:]:
genby += " %s" % a
print(genby)
for d in denies:
print(" %s" % d)
genby = " # generated by: lxc-generate-aa-rules.py"
for a in sys.argv[1:]:
genby += " %s" % a
print(genby)
for d in denies:
print(" %s" % d)
if __name__ == "__main__":
main()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment