savior-source
savior-source copied to clipboard
SIMPLE_FILES macro necessary with KLEE
trafficstars
Hello, when I run Savior I get the following error:
Traceback (most recent call last):
File "../../coordinator/moriarty.py", line 278, in <module>
init(args.target, args.config);
File "../../coordinator/moriarty.py", line 268, in init
moriarty.start()
File "../../coordinator/moriarty.py", line 241, in start
utils.loop_every(self.epoch, self.poke_switch_oracle)
File "/root/savior/ml_fuzzing/savior-source/coordinator/utils/utils.py", line 226, in loop_every
func();
File "../../coordinator/moriarty.py", line 158, in poke_switch_oracle
self.se_factory.run(deduplicated_list, self.explorer_cov_file_list, self.batch_run_seed_num)
File "/root/savior/ml_fuzzing/savior-source/coordinator/SEs/klee_explorer.py", line 63, in run
_.run(input_list[input_base : input_base + batch_run_input_num], cov_file_list[explorer_base : explorer_base + self.se_num][i])
File "/root/savior/ml_fuzzing/savior-source/coordinator/SEs/klee_conc_explorer.py", line 152, in run
if max_input_size < os.path.getsize(afl_input):
File "/usr/lib/python2.7/genericpath.py", line 57, in getsize
return os.stat(filename).st_size
OSError: [Errno 2] No such file or directory: 'obj-savior/out/master/queue/id_000181'
When the coordinator tries to get the seed files specified in coverage.csv to give to KLEE, it cannot find them unless the SIMPLE_FILES macro in AFL/config.h is uncommented (since the file names written in coverage.csv are only the simple versions). Is this normal? Is there a way to get Savior to run while allowing the file names to be their longer versions?
Hi, sorry for the inconvenience, the naming convention is implemented by the KLEE's converter that converts .ktest files to concrete input. It is probably difficult to alter the behavior without touching the KLEE source.