mirror of
https://github.com/openssl/openssl.git
synced 2024-12-15 06:01:37 +08:00
9d74090959
Instead of invoking the fuzz test programs once for every corpora file, we invoke them once for each directory of corpora files. This dramatically reduces the number of program invikations, as well as the time 99-test_fuzz.t takes to complete. fuzz/test-corpus.c was enhanced to handle directories as well as regular files. Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de> Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/5776)
41 lines
1.1 KiB
Perl
41 lines
1.1 KiB
Perl
#!/usr/bin/env perl
|
|
# Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
|
|
#
|
|
# Licensed under the OpenSSL license (the "License"). You may not use
|
|
# this file except in compliance with the License. You can obtain a copy
|
|
# in the file LICENSE in the source distribution or at
|
|
# https://www.openssl.org/source/license.html
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use OpenSSL::Glob;
|
|
use OpenSSL::Test qw/:DEFAULT srctop_file/;
|
|
use OpenSSL::Test::Utils;
|
|
|
|
setup("test_fuzz");
|
|
|
|
my @fuzzers = ('asn1', 'asn1parse', 'bignum', 'bndiv', 'client', 'conf', 'crl', 'server', 'x509');
|
|
if (!disabled("cms")) {
|
|
push @fuzzers, 'cms';
|
|
}
|
|
if (!disabled("ct")) {
|
|
push @fuzzers, 'ct';
|
|
}
|
|
plan tests => scalar @fuzzers;
|
|
|
|
foreach my $f (@fuzzers) {
|
|
subtest "Fuzzing $f" => sub {
|
|
my @dirs = glob(srctop_file('fuzz', 'corpora', $f));
|
|
push @dirs, glob(srctop_file('fuzz', 'corpora', "$f-*"));
|
|
|
|
plan skip_all => "No corpora for $f-test" unless @dirs;
|
|
|
|
plan tests => scalar @dirs;
|
|
|
|
foreach (@dirs) {
|
|
ok(run(fuzz(["$f-test", $_])));
|
|
}
|
|
}
|
|
}
|