def get_parent(self, filepath, isCrash=True):
dirname, basename = os.path.split(filepath)
if isCrash:
match = self.find_crash_parent_regex.match(basename)
# (_, _, session, _, syncname, src_id) = match.groups()
(_, _, session, _, syncname, src_id) = match.groups()
searchdir = self.afl_fuzzing_dir
# if syncname:
# searchdir += '/' + syncname + '/queue'
if session:
searchdir += '/' + session + '/queue'
else:
assert False, "Parent of crash file {} cannot be found".format(basename)
else:
match = self.find_queue_parent_regex.match(basename)
if not match:
self.logr("No parent could be found for {}".format(basename))
return None
(_, syncname, src_id) = match.groups()
searchdir = dirname
if syncname:
searchdir += '/../../' + syncname + '/queue'
search_cmd = "find " + searchdir + " -maxdepth 1" + " -name id:" + src_id + "*"
parent_fname = subprocess.check_output(search_cmd, stderr=subprocess.STDOUT, shell=True)
parent_list = filter(None, parent_fname.split("\n"))
if (len(parent_list) == 0):
self.logr("No parents found for file {}".format(basename))
return None
if (len(parent_list) > 1):
self.logr("Multiple parents found for file {}. Selecting first.".format(basename))
return os.path.abspath(parent_list[0].rstrip("\n"))
评论列表
文章目录