mirror of
https://gitlab.com/apparmor/apparmor
synced 2025-09-02 15:25:27 +00:00
Detect endless #include loop when parsing profiles
If an include file includes itsself (for example if local/foo has '#include <local/foo>'), print a warning instead of calling load_include() again and again. This fixes a crash when hitting such a case: RecursionError: maximum recursion depth exceeded while calling a Python object Fixes: https://bugzilla.suse.com/show_bug.cgi?id=1184779 for the tools. The parser will also need a fix.
This commit is contained in:
@@ -1855,6 +1855,10 @@ def parse_profile_data(data, file, do_include, in_preamble):
|
||||
|
||||
if rule_name == 'inc_ie':
|
||||
for incname in rule_obj.get_full_paths(profile_dir):
|
||||
if incname == file:
|
||||
# warn about endless loop, and don't call load_include() (again) for this file
|
||||
aaui.UI_Important(_('WARNING: endless loop detected: file %s includes itsself' % incname))
|
||||
else:
|
||||
load_include(incname, in_preamble)
|
||||
|
||||
elif RE_PROFILE_START.search(line): # Starting line of a profile
|
||||
|
Reference in New Issue
Block a user