def create_globals(module, support, debug): global parser, lexer, m, spt if not parser: lexer = lex.lex() parser = yacc.yacc(method="LALR", debug=debug, write_tables=0) if module is not None: m = module else: m = refpolicy.Module() if not support: spt = refpolicy.SupportMacros() else: spt = support
if debug: o("parsing file %s\n" % f) try: fd = open(f) txt = fd.read() fd.close() parse(txt, module, spt, debug) except IOError, e: return except ValueError, e: raise ValueError("error parsing file %s: %s" % (f, str(e))) spt = None if support_macros: o("Parsing support macros (%s): " % support_macros) spt = refpolicy.SupportMacros() parse_file(support_macros, spt) headers.children.append(spt) # FIXME: Total hack - add in can_exec rather than parse the insanity # of misc_macros. We are just going to preten that this is an interface # to make the expansion work correctly. can_exec = refpolicy.Interface("can_exec") av = access.AccessVector([ "$1", "$2", "file", "execute_no_trans", "read", "getattr", "lock", "execute", "ioctl" ]) can_exec.children.append(refpolicy.AVRule(av)) headers.children.append(can_exec)