def Main(argv): """Instantiate the group of message-sequences used to seed the fuzzer. Args: argv: command-line arguments used to run the sequencer. """ parsed = wlu.ParseOpts(argv) protocols = wlu.ReadProtocols(parsed.spec) dep_graph = GetDependencyGraph(protocols) for _, interface in wlu.AllInterfaces(protocols): for req in interface.findall('request'): interface_name = interface.attrib['name'] message_name = req.attrib['name'] builder = SequenceBuilder(interface_name + '_' + message_name, dep_graph) builder.BuildMessage(interface_name, message_name, '') # Add a round-trip to the sequence in case the server wants to do # something funky. builder.AppendRoundTrip() SequenceToTemplate(parsed, builder) # For sequences which are more complicated than a dependency search, we have # a manual backup. for sequence_builder in GetManualSequences(dep_graph): SequenceToTemplate(parsed, sequence_builder)
def Main(argv): """Instantiate the group of message-sequences used to seed the fuzzer. Args: argv: command-line arguments used to run the sequencer. """ parsed = wlu.ParseOpts(argv) out_dir = parsed.output if not os.path.exists(out_dir): os.mkdir(out_dir) protocols = wlu.ReadProtocols(parsed.spec) dep_graph = GetDependencyGraph(protocols) for _, interface in wlu.AllInterfaces(protocols): for req in interface.findall('request'): interface_name = interface.attrib['name'] message_name = req.attrib['name'] sequence = GetSequenceForMessage(interface_name, message_name, SequenceContext(dep_graph), '') # Add a round-trip to the sequence in case the server wants to do # something funky. sequence += [round_trip] out_path = os.path.join( out_dir, '%s_%s.asciipb' % (interface_name, message_name)) wayland_templater.InstantiateTemplate(parsed.input, {'sequence': sequence}, out_path, parsed.directory)
def GetTemplateData(protocol_paths): protocols = wlu.ReadProtocols(protocol_paths) context = TemplaterContext(protocols) interfaces = [] for p in protocols: for i in p.findall('interface'): interfaces.append(GetInterface(i, context)) return { 'protocol_names': [p.attrib['name'] for p in protocols], 'interfaces': interfaces, }
def GetTemplateData(protocol_paths): protocols = wlu.ReadProtocols(protocol_paths) context = TemplaterContext(protocols) interfaces = [] for p in protocols: for i in p.findall('interface'): interfaces.append(GetInterface(i, context)) assert all(p.endswith('.xml') for p in protocol_paths) return { 'protocol_names': [str(os.path.basename(p))[:-4] for p in protocol_paths], 'interfaces': interfaces, }