2
0
mirror of https://gitlab.com/apparmor/apparmor synced 2025-08-28 21:07:56 +00:00

Split off serialize_parse_profile_start_line() from

serialize_profile_from_old_profile() in aa.py, as a preparation to add
tests and then switch to the upcoming RE_PROFILE_START wrapper function.

Besides moving the code, I replaced write_prof_data[profile][hat]['profile']
and write_prof_data[profile][hat]['external'] with function parameters
to avoid that I have to pass around the full write_prof_data.

Note: The "lineno" parameter is technically superfluous - I kept it to
have the parameters as close to parse_profile_start() as possible and
hope that I can merge those functions later (when we have test coverage).


Acked-by: Steve Beattie <steve@nxnw.org> for trunk and 2.9.
This commit is contained in:
Christian Boltz 2015-03-10 19:08:17 +01:00
parent 5b92ef4b10
commit 0636dea5c6

View File

@ -3715,6 +3715,35 @@ def serialize_profile(profile_data, name, options):
return string + '\n'
def serialize_parse_profile_start(line, file, lineno, profile, hat, prof_data_profile, prof_data_external, correct):
matches = RE_PROFILE_START.search(line).groups()
if profile and profile == hat and matches[3]:
hat = matches[3]
in_contained_hat = True
if prof_data_profile:
pass
else:
if matches[1]:
profile = matches[1]
else:
profile = matches[3]
if len(profile.split('//')) >= 2:
profile, hat = profile.split('//')[:2]
else:
hat = None
in_contained_hat = False
if hat and not prof_data_external:
correct = False
else:
hat = profile
flags = matches[6]
profile = strip_quotes(profile)
if hat:
hat = strip_quotes(hat)
return (profile, hat, flags, in_contained_hat, correct)
def serialize_profile_from_old_profile(profile_data, name, options):
data = []
string = ''
@ -3821,31 +3850,9 @@ def serialize_profile_from_old_profile(profile_data, name, options):
line = line.rstrip('\n')
#data.append(' ')#data.append('read: '+line)
if RE_PROFILE_START.search(line):
matches = RE_PROFILE_START.search(line).groups()
if profile and profile == hat and matches[3]:
hat = matches[3]
in_contained_hat = True
if write_prof_data[profile][hat]['profile']:
pass
else:
if matches[1]:
profile = matches[1]
else:
profile = matches[3]
if len(profile.split('//')) >= 2:
profile, hat = profile.split('//')[:2]
else:
hat = None
in_contained_hat = False
if hat and not write_prof_data[profile][hat]['external']:
correct = False
else:
hat = profile
flags = matches[6]
profile = strip_quotes(profile)
if hat:
hat = strip_quotes(hat)
(profile, hat, flags, in_contained_hat, correct) = serialize_parse_profile_start(
line, prof_filename, None, profile, hat, write_prof_data[profile][hat]['profile'], write_prof_data[profile][hat]['external'], correct)
if not write_prof_data[hat]['name'] == profile:
correct = False