openssl/test/build.info
Rich Salz c0452248ea Ignore dups in X509_STORE_add_*
X509_STORE_add_cert and X509_STORE_add_crl are changed to return
success if the object to be added was already found in the store, rather
than returning an error.

Raise errors if empty or malformed files are read when loading certificates
and CRLs.

Remove NULL checks and allow a segv to occur.
Add error handing for all calls to X509_STORE_add_c{ert|tl}

Refactor these two routines into one.

Bring the unit test for duplicate certificates up to date using the test
framework.

Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/2830)
2017-04-20 15:33:42 -04:00

435 lines
15 KiB
Plaintext

{-
use File::Spec::Functions;
sub rebase_files
{
my ($base, $files) = @_;
return join(" ", map { "$base/$_" } split(/\s+/, $files));
}
our $apps_extra =
$config{target} =~ /^vms-/ ? "../apps/vms_term_sock.c" : "";
""
-}
IF[{- !$disabled{tests} -}]
PROGRAMS_NO_INST=\
aborttest test_test \
sanitytest exdatatest bntest \
ectest ecdsatest gmdifftest pbelutest ideatest \
md2test \
hmactest \
rc2test rc4test rc5test \
destest sha1test sha256t sha512t \
mdc2test \
randtest dhtest enginetest casttest \
bftest ssltest_old dsatest exptest rsa_test \
evp_test evp_extra_test igetest v3nametest v3ext \
crltest danetest bad_dtls_test lhash_test \
constant_time_test verify_extra_test clienthellotest \
packettest asynctest secmemtest srptest memleaktest stack_test \
dtlsv1listentest ct_test threadstest afalgtest d2i_test \
ssl_test_ctx_test ssl_test x509aux cipherlist_test asynciotest \
bioprinttest sslapitest dtlstest sslcorrupttest bio_enc_test \
pkey_meth_test uitest cipherbytes_test asn1_encode_test \
x509_time_test x509_dup_cert_test recordlentest
SOURCE[aborttest]=aborttest.c
INCLUDE[aborttest]=../include
DEPEND[aborttest]=../libcrypto
SOURCE[sanitytest]=sanitytest.c testutil.c test_main.c
INCLUDE[sanitytest]=../include
DEPEND[sanitytest]=../libcrypto
SOURCE[test_test]=test_test.c testutil.c test_main.c
INCLUDE[test_test]=.. ../include
DEPEND[test_test]=../libcrypto
SOURCE[exdatatest]=exdatatest.c testutil.c test_main.c
INCLUDE[exdatatest]=../include
DEPEND[exdatatest]=../libcrypto
SOURCE[bntest]=bntest.c testutil.c test_main_custom.c
INCLUDE[bntest]=.. ../crypto/include ../include
DEPEND[bntest]=../libcrypto
SOURCE[ectest]=ectest.c
INCLUDE[ectest]=.. ../include
DEPEND[ectest]=../libcrypto
SOURCE[ecdsatest]=ecdsatest.c testutil.c test_main.c
INCLUDE[ecdsatest]=../include
DEPEND[ecdsatest]=../libcrypto
SOURCE[gmdifftest]=gmdifftest.c testutil.c test_main.c
INCLUDE[gmdifftest]=../include
DEPEND[gmdifftest]=../libcrypto
SOURCE[pbelutest]=pbelutest.c testutil.c test_main.c
INCLUDE[pbelutest]=../include
DEPEND[pbelutest]=../libcrypto
SOURCE[ideatest]=ideatest.c testutil.c test_main.c
INCLUDE[ideatest]=../include
DEPEND[ideatest]=../libcrypto
SOURCE[md2test]=md2test.c testutil.c test_main.c
INCLUDE[md2test]=../include
DEPEND[md2test]=../libcrypto
SOURCE[hmactest]=hmactest.c testutil.c test_main.c
INCLUDE[hmactest]=../include
DEPEND[hmactest]=../libcrypto
SOURCE[rc2test]=rc2test.c testutil.c test_main.c
INCLUDE[rc2test]=../include
DEPEND[rc2test]=../libcrypto
SOURCE[rc4test]=rc4test.c testutil.c test_main.c
INCLUDE[rc4test]=../include
DEPEND[rc4test]=../libcrypto
SOURCE[rc5test]=rc5test.c testutil.c test_main.c
INCLUDE[rc5test]=../include
DEPEND[rc5test]=../libcrypto
SOURCE[destest]=destest.c testutil.c test_main.c
INCLUDE[destest]=../include
DEPEND[destest]=../libcrypto
SOURCE[sha1test]=sha1test.c testutil.c test_main.c
INCLUDE[sha1test]=../include
DEPEND[sha1test]=../libcrypto
SOURCE[sha256t]=sha256t.c testutil.c test_main.c
INCLUDE[sha256t]=../include
DEPEND[sha256t]=../libcrypto
SOURCE[sha512t]=sha512t.c testutil.c test_main.c
INCLUDE[sha512t]=../include
DEPEND[sha512t]=../libcrypto
SOURCE[mdc2test]=mdc2test.c testutil.c test_main.c
INCLUDE[mdc2test]=../include
DEPEND[mdc2test]=../libcrypto
SOURCE[randtest]=randtest.c testutil.c test_main.c
INCLUDE[randtest]=../include
DEPEND[randtest]=../libcrypto
SOURCE[dhtest]=dhtest.c testutil.c test_main.c
INCLUDE[dhtest]=.. ../include
DEPEND[dhtest]=../libcrypto
SOURCE[enginetest]=enginetest.c testutil.c test_main.c
INCLUDE[enginetest]=../include
DEPEND[enginetest]=../libcrypto
SOURCE[casttest]=casttest.c testutil.c test_main.c
INCLUDE[casttest]=.. ../include
DEPEND[casttest]=../libcrypto
SOURCE[bftest]=bftest.c testutil.c test_main_custom.c
INCLUDE[bftest]=../include
DEPEND[bftest]=../libcrypto
SOURCE[ssltest_old]=ssltest_old.c
INCLUDE[ssltest_old]=.. ../include
DEPEND[ssltest_old]=../libcrypto ../libssl
SOURCE[dsatest]=dsatest.c testutil.c test_main.c
INCLUDE[dsatest]=.. ../include
DEPEND[dsatest]=../libcrypto
SOURCE[exptest]=exptest.c
INCLUDE[exptest]=../include
DEPEND[exptest]=../libcrypto
SOURCE[rsa_test]=rsa_test.c testutil.c test_main.c
INCLUDE[rsa_test]=.. ../include
DEPEND[rsa_test]=../libcrypto
SOURCE[evp_test]=evp_test.c
INCLUDE[evp_test]=../include
DEPEND[evp_test]=../libcrypto
SOURCE[evp_extra_test]=evp_extra_test.c testutil.c test_main.c
INCLUDE[evp_extra_test]=../include
DEPEND[evp_extra_test]=../libcrypto
SOURCE[igetest]=igetest.c
INCLUDE[igetest]=.. ../include
DEPEND[igetest]=../libcrypto
SOURCE[v3nametest]=v3nametest.c testutil.c test_main.c
INCLUDE[v3nametest]=.. ../include
DEPEND[v3nametest]=../libcrypto
SOURCE[crltest]=crltest.c testutil.c test_main.c
INCLUDE[crltest]=../include
DEPEND[crltest]=../libcrypto
SOURCE[v3ext]=v3ext.c testutil.c test_main_custom.c
INCLUDE[v3ext]=../include
DEPEND[v3ext]=../libcrypto
SOURCE[danetest]=danetest.c
INCLUDE[danetest]=../include
DEPEND[danetest]=../libcrypto ../libssl
SOURCE[constant_time_test]=constant_time_test.c testutil.c test_main.c
INCLUDE[constant_time_test]=.. ../include
DEPEND[constant_time_test]=../libcrypto
SOURCE[verify_extra_test]=verify_extra_test.c testutil.c test_main_custom.c
INCLUDE[verify_extra_test]=../include
DEPEND[verify_extra_test]=../libcrypto
SOURCE[clienthellotest]=clienthellotest.c testutil.c test_main_custom.c
INCLUDE[clienthellotest]=../include
DEPEND[clienthellotest]=../libcrypto ../libssl
SOURCE[bad_dtls_test]=bad_dtls_test.c testutil.c test_main.c
INCLUDE[bad_dtls_test]=../include
DEPEND[bad_dtls_test]=../libcrypto ../libssl
SOURCE[packettest]=packettest.c testutil.c test_main.c
INCLUDE[packettest]=../include
DEPEND[packettest]=../libcrypto
SOURCE[asynctest]=asynctest.c
INCLUDE[asynctest]=.. ../include
DEPEND[asynctest]=../libcrypto
SOURCE[secmemtest]=secmemtest.c testutil.c test_main.c
INCLUDE[secmemtest]=../include
DEPEND[secmemtest]=../libcrypto
SOURCE[srptest]=srptest.c testutil.c test_main.c
INCLUDE[srptest]=../include
DEPEND[srptest]=../libcrypto
SOURCE[memleaktest]=memleaktest.c testutil.c
INCLUDE[memleaktest]=../include
DEPEND[memleaktest]=../libcrypto
SOURCE[stack_test]=stack_test.c testutil.c test_main.c
INCLUDE[stack_test]=.. ../include
DEPEND[stack_test]=../libcrypto
SOURCE[lhash_test]=lhash_test.c testutil.c test_main.c
INCLUDE[lhash_test]=.. ../include
DEPEND[lhash_test]=../libcrypto
SOURCE[dtlsv1listentest]=dtlsv1listentest.c
INCLUDE[dtlsv1listentest]=.. ../include
DEPEND[dtlsv1listentest]=../libssl
SOURCE[ct_test]=ct_test.c testutil.c test_main_custom.c
INCLUDE[ct_test]=../crypto/include ../include
DEPEND[ct_test]=../libcrypto
SOURCE[threadstest]=threadstest.c testutil.c test_main.c
INCLUDE[threadstest]=.. ../include
DEPEND[threadstest]=../libcrypto
SOURCE[afalgtest]=afalgtest.c testutil.c
INCLUDE[afalgtest]=.. ../include
DEPEND[afalgtest]=../libcrypto
SOURCE[d2i_test]=d2i_test.c testutil.c test_main_custom.c
INCLUDE[d2i_test]=.. ../include
DEPEND[d2i_test]=../libcrypto
SOURCE[ssl_test_ctx_test]=ssl_test_ctx_test.c ssl_test_ctx.c testutil.c test_main_custom.c
INCLUDE[ssl_test_ctx_test]=.. ../include
DEPEND[ssl_test_ctx_test]=../libcrypto ../libssl
SOURCE[ssl_test]=ssl_test.c ssl_test_ctx.c testutil.c handshake_helper.c test_main_custom.c
INCLUDE[ssl_test]=.. ../include
DEPEND[ssl_test]=../libcrypto ../libssl
SOURCE[cipherlist_test]=cipherlist_test.c testutil.c test_main.c
INCLUDE[cipherlist_test]=.. ../include
DEPEND[cipherlist_test]=../libcrypto ../libssl
INCLUDE[testutil.o]=..
INCLUDE[ssl_test_ctx.o]=../include
INCLUDE[handshake_helper.o]=../include
INCLUDE[ssltestlib.o]=.. ../include
SOURCE[x509aux]=x509aux.c testutil.c test_main_custom.c
INCLUDE[x509aux]=.. ../include
DEPEND[x509aux]=../libcrypto
SOURCE[asynciotest]=asynciotest.c ssltestlib.c testutil.c test_main_custom.c
INCLUDE[asynciotest]=../include
DEPEND[asynciotest]=../libcrypto ../libssl
SOURCE[bioprinttest]=bioprinttest.c testutil.c test_main_custom.c
INCLUDE[bioprinttest]=../ ../include
DEPEND[bioprinttest]=../libcrypto
SOURCE[sslapitest]=sslapitest.c ssltestlib.c testutil.c test_main_custom.c
INCLUDE[sslapitest]=../include ..
DEPEND[sslapitest]=../libcrypto ../libssl
SOURCE[dtlstest]=dtlstest.c ssltestlib.c testutil.c test_main_custom.c
INCLUDE[dtlstest]=../include .
DEPEND[dtlstest]=../libcrypto ../libssl
SOURCE[sslcorrupttest]=sslcorrupttest.c ssltestlib.c testutil.c test_main_custom.c
INCLUDE[sslcorrupttest]=../include .
DEPEND[sslcorrupttest]=../libcrypto ../libssl
SOURCE[bio_enc_test]=bio_enc_test.c
INCLUDE[bio_enc_test]=../include
DEPEND[bio_enc_test]=../libcrypto
SOURCE[pkey_meth_test]=pkey_meth_test.c testutil.c test_main.c
INCLUDE[pkey_meth_test]=../include
DEPEND[pkey_meth_test]=../libcrypto
SOURCE[x509_time_test]=x509_time_test.c testutil.c test_main.c
INCLUDE[x509_time_test]=.. ../include
DEPEND[x509_time_test]=../libcrypto
SOURCE[recordlentest]=recordlentest.c ssltestlib.c testutil.c test_main_custom.c
INCLUDE[recordlentest]=../include .
DEPEND[recordlentest]=../libcrypto ../libssl
SOURCE[x509_dup_cert_test]=x509_dup_cert_test.c testutil.c test_main_custom.c
INCLUDE[x509_dup_cert_test]=../include
DEPEND[x509_dup_cert_test]=../libcrypto
IF[{- !$disabled{psk} -}]
PROGRAMS_NO_INST=dtls_mtu_test
SOURCE[dtls_mtu_test]=dtls_mtu_test.c ssltestlib.c
INCLUDE[dtls_mtu_test]=.. ../include
DEPEND[dtls_mtu_test]=../libcrypto ../libssl
ENDIF
IF[{- !$disabled{shared} -}]
PROGRAMS_NO_INST=shlibloadtest
SOURCE[shlibloadtest]=shlibloadtest.c
INCLUDE[shlibloadtest]=../include
ENDIF
IF[{- $disabled{shared} -}]
PROGRAMS_NO_INST=cipher_overhead_test
SOURCE[cipher_overhead_test]=cipher_overhead_test.c testutil.c test_main.c
INCLUDE[cipher_overhead_test]=.. ../include
DEPEND[cipher_overhead_test]=../libcrypto ../libssl
ENDIF
SOURCE[uitest]=uitest.c testutil.c test_main_custom.c \
../apps/apps.c ../apps/opt.c {- $apps_extra -}
INCLUDE[uitest]=.. ../include
DEPEND[uitest]=../libcrypto ../libssl
SOURCE[cipherbytes_test]=cipherbytes_test.c testutil.c test_main_custom.c
INCLUDE[cipherbytes_test]=.. ../include
DEPEND[cipherbytes_test]=../libcrypto ../libssl
SOURCE[asn1_encode_test]=asn1_encode_test.c testutil.c test_main.c
INCLUDE[asn1_encode_test]=../include
DEPEND[asn1_encode_test]=../libcrypto
# Internal test programs. These are essentially a collection of internal
# test routines. Some of them need to reach internal symbols that aren't
# available through the shared library (at least on Linux, Solaris, Windows
# and VMS, where the exported symbols are those listed in util/*.num), these
# programs are forcibly linked with the static libraries, where all symbols
# are always available. This excludes linking these programs natively on
# Windows when building shared libraries, since the static libraries share
# names with the DLL import libraries.
IF[{- $disabled{shared} || $target{build_scheme}->[1] ne 'windows' -}]
PROGRAMS_NO_INST=asn1_internal_test modes_internal_test x509_internal_test \
tls13encryptiontest wpackettest
IF[{- !$disabled{poly1305} -}]
PROGRAMS_NO_INST=poly1305_internal_test
ENDIF
IF[{- !$disabled{chacha} -}]
PROGRAMS_NO_INST=chacha_internal_test
ENDIF
IF[{- !$disabled{siphash} -}]
PROGRAMS_NO_INST=siphash_internal_test
ENDIF
SOURCE[poly1305_internal_test]=poly1305_internal_test.c testutil.c test_main_custom.c
INCLUDE[poly1305_internal_test]=.. ../include ../crypto/include
DEPEND[poly1305_internal_test]=../libcrypto.a
SOURCE[chacha_internal_test]=chacha_internal_test.c testutil.c test_main.c
INCLUDE[chacha_internal_test]=.. ../include ../crypto/include
DEPEND[chacha_internal_test]=../libcrypto.a
SOURCE[asn1_internal_test]=asn1_internal_test.c testutil.c test_main.c
INCLUDE[asn1_internal_test]=.. ../include ../crypto/include
DEPEND[asn1_internal_test]=../libcrypto.a
SOURCE[modes_internal_test]=modes_internal_test.c testutil.c test_main_custom.c
INCLUDE[modes_internal_test]=.. ../include
DEPEND[modes_internal_test]=../libcrypto.a
SOURCE[x509_internal_test]=x509_internal_test.c testutil.c test_main.c
INCLUDE[x509_internal_test]=.. ../include
DEPEND[x509_internal_test]=../libcrypto.a
SOURCE[tls13encryptiontest]=tls13encryptiontest.c testutil.c test_main.c
INCLUDE[tls13encryptiontest]=.. ../include
DEPEND[tls13encryptiontest]=../libcrypto ../libssl.a
SOURCE[wpackettest]=wpackettest.c testutil.c test_main_custom.c
INCLUDE[wpackettest]=../include
DEPEND[wpackettest]=../libcrypto ../libssl.a
SOURCE[siphash_internal_test]=siphash_internal_test.c testutil.c test_main_custom.c
INCLUDE[siphash_internal_test]=.. ../include ../crypto/include
DEPEND[siphash_internal_test]=../libcrypto.a
ENDIF
IF[{- !$disabled{mdc2} -}]
PROGRAMS_NO_INST=mdc2_internal_test
ENDIF
SOURCE[mdc2_internal_test]=mdc2_internal_test.c testutil.c test_main.c
INCLUDE[mdc2_internal_test]=.. ../include
DEPEND[mdc2_internal_test]=../libcrypto
# We disable this test completely in a shared build because it deliberately
# redefines some internal libssl symbols. This doesn't work in a non-shared
# build
IF[{- !$disabled{shared} -}]
PROGRAMS_NO_INST=tls13secretstest
SOURCE[tls13secretstest]=tls13secretstest.c testutil.c test_main.c
SOURCE[tls13secretstest]= ../ssl/tls13_enc.c ../ssl/packet.c
INCLUDE[tls13secretstest]=.. ../include
DEPEND[tls13secretstest]=../libcrypto ../libssl
ENDIF
ENDIF
{-
use File::Spec::Functions;
use File::Basename;
use if $^O ne "VMS", 'File::Glob' => qw/glob/;
my @nogo_headers = ( "asn1_mac.h",
"__decc_include_prologue.h",
"__decc_include_epilogue.h" );
my @headerfiles = glob catfile($sourcedir,
updir(), "include", "openssl", "*.h");
foreach my $headerfile (@headerfiles) {
my $name = basename($headerfile, ".h");
next if $disabled{$name};
next if grep { $_ eq lc("$name.h") } @nogo_headers;
$OUT .= <<"_____";
PROGRAMS_NO_INST=buildtest_$name
GENERATE[buildtest_$name.c]=generate_buildtest.pl $name
SOURCE[buildtest_$name]=buildtest_$name.c
INCLUDE[buildtest_$name]=../include
DEPEND[buildtest_$name]=../libssl ../libcrypto
_____
}
-}