Skip to content

Commit ec3e838

Browse files
committed
Add simple script to convert switch-info.json
1 parent 309daf0 commit ec3e838

2 files changed

Lines changed: 49 additions & 1 deletion

File tree

AFLplusplus

tools/patch-gen.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#!/usr/bin/env python3
2+
3+
import json
4+
5+
def get_rules(work_dir):
6+
switch_file=open(work_dir+'/switch-info.json',"r")
7+
root_object=json.load(switch_file)
8+
switch_file.close()
9+
rules=dict()
10+
11+
rule_root=root_object['rules']
12+
for file in rule_root:
13+
for line in file['lines']:
14+
for switch in line['switches']:
15+
current_switch=switch['switch']
16+
current_cases=[]
17+
18+
for type in switch['types']:
19+
for case in type:
20+
current_cases.append(case)
21+
22+
rules[current_switch]=current_cases
23+
24+
return rules
25+
26+
def put_patches(work_dir,rules):
27+
print(json.dumps(rules))
28+
new_object=dict()
29+
counter=1
30+
for k,v in rules.items():
31+
for case in v:
32+
new_config={'__SWITCH'+str(k):case}
33+
new_patch=[new_config]
34+
new_object[str(counter)]=new_patch
35+
counter+=1
36+
37+
patch_file=open(work_dir+'/patch-info.json','w')
38+
json.dump(new_object,fp=patch_file,indent=2)
39+
patch_file.close()
40+
41+
import getopt
42+
from sys import argv
43+
44+
if __name__=='__main__':
45+
opts,args=getopt.getopt(argv[1:],'')
46+
work_dir=args[0]
47+
rules=get_rules(work_dir)
48+
put_patches(work_dir,rules)

0 commit comments

Comments
 (0)