def test_filter(self): host = MockHost() fuzzers = host.fuzzers self.assertEqual(len(Fuzzer.filter(fuzzers, '')), 5) self.assertEqual(len(Fuzzer.filter(fuzzers, '/')), 5) self.assertEqual(len(Fuzzer.filter(fuzzers, 'mock')), 5) self.assertEqual(len(Fuzzer.filter(fuzzers, 'package1')), 3) self.assertEqual(len(Fuzzer.filter(fuzzers, 'target1')), 2) self.assertEqual(len(Fuzzer.filter(fuzzers, '1/2')), 1) self.assertEqual(len(Fuzzer.filter(fuzzers, 'target4')), 0) with self.assertRaises(Fuzzer.NameError): Fuzzer.filter(fuzzers, 'a/b/c')
def main(): parser = Args.make_parser( description='Lists fuzzers matching NAME if provided, or all fuzzers.', name_required=False) args = parser.parse_args() host = Host.from_build() fuzzers = Fuzzer.filter(host.fuzzers, args.name) if len(fuzzers) == 0: print('No matching fuzzers.') return 1 print('Found %d matching fuzzers:' % len(fuzzers)) for fuzzer in fuzzers: print(' %s/%s' % fuzzer) return 0
def main(): parser = Args.make_parser( description='Reports status for the fuzzer matching NAME if provided, ' + 'or for all running fuzzers. Status includes execution state, corpus ' + 'size, and number of artifacts.', name_required=False) args = parser.parse_args() host = Host() device = Device.from_args(host, args) fuzzers = Fuzzer.filter(host.fuzzers, args.name) pids = device.getpids() silent = True for pkg, tgt in fuzzers: fuzzer = Fuzzer(device, pkg, tgt) if not args.name and tgt not in pids: continue silent = False if tgt in pids: print(str(fuzzer) + ': RUNNING') else: print(str(fuzzer) + ': STOPPED') print(' Output path: ' + fuzzer.data_path()) print(' Corpus size: %d inputs / %d bytes' % fuzzer.measure_corpus()) artifacts = fuzzer.list_artifacts() if len(artifacts) == 0: print(' Artifacts: None') else: print(' Artifacts: ' + artifacts[0]) for artifact in artifacts[1:]: print(' ' + artifact) if silent: print( 'No fuzzers are running. Include \'name\' to check specific fuzzers.' ) return 1 return 0