tests: Add --valgrind option to test/fuzz/test_runner.py for running fuzzing test cases under valgrind
This commit is contained in:
1 parent
2a2631fb0d
commit
1b068c50dd
1 file changed
+9
-1
@@ -61,6 +61,11 @@ def main():
|
|||||||
action='store_true',
|
action='store_true',
|
||||||
help='If true, export coverage information to files in the seed corpus',
|
help='If true, export coverage information to files in the seed corpus',
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
'--valgrind',
|
||||||
|
action='store_true',
|
||||||
|
help='If true, run fuzzing binaries under the valgrind memory error detector. Valgrind 3.14 or later required.',
|
||||||
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'seed_dir',
|
'seed_dir',
|
||||||
help='The seed corpus to run on (must contain subfolders for each fuzz target).',
|
help='The seed corpus to run on (must contain subfolders for each fuzz target).',
|
||||||
@@ -129,10 +134,11 @@ def main():
|
|||||||
test_list=test_list_selection,
|
test_list=test_list_selection,
|
||||||
build_dir=config["environment"]["BUILDDIR"],
|
build_dir=config["environment"]["BUILDDIR"],
|
||||||
export_coverage=args.export_coverage,
|
export_coverage=args.export_coverage,
|
||||||
|
use_valgrind=args.valgrind,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def run_once(*, corpus, test_list, build_dir, export_coverage):
|
def run_once(*, corpus, test_list, build_dir, export_coverage, use_valgrind):
|
||||||
for t in test_list:
|
for t in test_list:
|
||||||
corpus_path = os.path.join(corpus, t)
|
corpus_path = os.path.join(corpus, t)
|
||||||
if t in FUZZERS_MISSING_CORPORA:
|
if t in FUZZERS_MISSING_CORPORA:
|
||||||
@@ -143,6 +149,8 @@ def run_once(*, corpus, test_list, build_dir, export_coverage):
|
|||||||
'-detect_leaks=0',
|
'-detect_leaks=0',
|
||||||
corpus_path,
|
corpus_path,
|
||||||
]
|
]
|
||||||
|
if use_valgrind:
|
||||||
|
args = ['valgrind', '--quiet', '--error-exitcode=1', '--exit-on-first-error=yes'] + args
|
||||||
logging.debug('Run {} with args {}'.format(t, args))
|
logging.debug('Run {} with args {}'.format(t, args))
|
||||||
result = subprocess.run(args, stderr=subprocess.PIPE, universal_newlines=True)
|
result = subprocess.run(args, stderr=subprocess.PIPE, universal_newlines=True)
|
||||||
output = result.stderr
|
output = result.stderr
|
||||||
|
|||||||
Reference in new issue
Block a user