Skip to content

Commit 848b023

Browse files
committed
apr_crypto: Skip tests when the driver cannot be loaded.
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1917338 13f79535-47bb-0310-9956-ffa450edef68
1 parent 130ff0d commit 848b023

File tree

1 file changed

+36
-4
lines changed

1 file changed

+36
-4
lines changed

test/testcrypto.c

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2516,6 +2516,7 @@ static const unsigned char test_PRNG_kat0_aes256[128] = {
25162516

25172517
static void test_crypto_prng(abts_case *tc, apr_crypto_cipher_e cipher, const unsigned char *test_PRNG_kat0)
25182518
{
2519+
char errbuf[128];
25192520
unsigned char randbytes[128], seed[APR_CRYPTO_PRNG_SEED_SIZE];
25202521
apr_crypto_prng_t *cprng = NULL;
25212522
apr_pool_t *pool = NULL;
@@ -2527,9 +2528,18 @@ static void test_crypto_prng(abts_case *tc, apr_crypto_cipher_e cipher, const un
25272528
ABTS_PTR_NOTNULL(tc, pool);
25282529

25292530
rv = apr_crypto_prng_init(pool, NULL, cipher, 0, NULL, 0);
2531+
2532+
if (APR_EDSOOPEN == rv) {
2533+
ABTS_NOT_IMPL(tc,
2534+
apr_psprintf(pool, "Crypto driver default DSO could not be opened"));
2535+
return;
2536+
}
2537+
25302538
ABTS_ASSERT(tc, "apr_crypto_prng_init returned APR_EREINIT", rv != APR_EREINIT);
25312539
ABTS_ASSERT(tc, "apr_crypto_prng_init returned APR_ENOTIMPL", rv != APR_ENOTIMPL);
2532-
ABTS_ASSERT(tc, "apr_crypto_prng_init failed", rv == APR_SUCCESS || rv == APR_ENOCIPHER);
2540+
ABTS_ASSERT(tc, apr_psprintf(pool, "apr_crypto_prng_init failed: %s",
2541+
apr_strerror(rv, errbuf, sizeof(errbuf))),
2542+
rv == APR_SUCCESS || rv == APR_ENOCIPHER);
25332543
if (rv != APR_SUCCESS) {
25342544
apr_pool_destroy(pool);
25352545
return;
@@ -2545,7 +2555,9 @@ static void test_crypto_prng(abts_case *tc, apr_crypto_cipher_e cipher, const un
25452555
ABTS_ASSERT(tc, "apr_crypto_prng_create returned APR_ENOTIMPL", rv != APR_ENOTIMPL);
25462556
ABTS_ASSERT(tc, "apr_crypto_prng_create returned APR_ENOCIPHER", rv != APR_ENOCIPHER);
25472557
ABTS_ASSERT(tc, "apr_crypto_prng_create returned APR_EDSOOPEN", rv != APR_EDSOOPEN);
2548-
ABTS_ASSERT(tc, "apr_crypto_prng_create failed", rv == APR_SUCCESS);
2558+
ABTS_ASSERT(tc, apr_psprintf(pool, "apr_crypto_prng_create failed: %s",
2559+
apr_strerror(rv, errbuf, sizeof(errbuf))),
2560+
rv == APR_SUCCESS);
25492561
if (rv != APR_SUCCESS) {
25502562
break;
25512563
}
@@ -2598,6 +2610,7 @@ static void test_crypto_prng_chacha20(abts_case *tc, void *data)
25982610
#if APR_HAS_FORK
25992611
static void test_crypto_fork_random(abts_case *tc, void *data)
26002612
{
2613+
char errbuf[128];
26012614
unsigned char randbytes[1024];
26022615
apr_pool_t *pool = NULL;
26032616
apr_file_t *pread = NULL;
@@ -2611,9 +2624,18 @@ static void test_crypto_fork_random(abts_case *tc, void *data)
26112624
ABTS_PTR_NOTNULL(tc, pool);
26122625

26132626
rv = apr_crypto_prng_init(pool, NULL, APR_CRYPTO_CIPHER_AUTO, 0, NULL, 0);
2627+
2628+
if (APR_EDSOOPEN == rv) {
2629+
ABTS_NOT_IMPL(tc,
2630+
apr_psprintf(pool, "Crypto driver default DSO could not be opened"));
2631+
return;
2632+
}
2633+
26142634
ABTS_ASSERT(tc, "apr_crypto_prng_init returned APR_EREINIT", rv != APR_EREINIT);
26152635
ABTS_ASSERT(tc, "apr_crypto_prng_init returned APR_ENOTIMPL", rv != APR_ENOTIMPL);
2616-
ABTS_ASSERT(tc, "apr_crypto_prng_init failed", rv == APR_SUCCESS);
2636+
ABTS_ASSERT(tc, apr_psprintf(pool, "apr_crypto_prng_init failed: %s",
2637+
apr_strerror(rv, errbuf, sizeof(errbuf))),
2638+
rv == APR_SUCCESS);
26172639

26182640
rv = apr_file_pipe_create(&pread, &pwrite, p);
26192641
ABTS_INT_EQUAL(tc, APR_SUCCESS, rv);
@@ -2681,6 +2703,7 @@ static void *APR_THREAD_FUNC thread_func(apr_thread_t *thd, void *data)
26812703

26822704
static void test_crypto_thread_random(abts_case *tc, void *data)
26832705
{
2706+
char errbuf[128];
26842707
static unsigned char zerobytes[800];
26852708
unsigned char *randbytes[NUM_THREADS];
26862709
apr_thread_t *threads[NUM_THREADS];
@@ -2694,9 +2717,18 @@ static void test_crypto_thread_random(abts_case *tc, void *data)
26942717
ABTS_PTR_NOTNULL(tc, pool);
26952718

26962719
rv = apr_crypto_prng_init(pool, NULL, APR_CRYPTO_CIPHER_AUTO, 0, NULL, flags);
2720+
2721+
if (APR_EDSOOPEN == rv) {
2722+
ABTS_NOT_IMPL(tc,
2723+
apr_psprintf(pool, "Crypto driver default DSO could not be opened"));
2724+
return;
2725+
}
2726+
26972727
ABTS_ASSERT(tc, "apr_crypto_prng_init returned APR_EREINIT", rv != APR_EREINIT);
26982728
ABTS_ASSERT(tc, "apr_crypto_prng_init returned APR_ENOTIMPL", rv != APR_ENOTIMPL);
2699-
ABTS_ASSERT(tc, "apr_crypto_prng_init failed", rv == APR_SUCCESS);
2729+
ABTS_ASSERT(tc, apr_psprintf(pool, "apr_crypto_prng_init failed: %s",
2730+
apr_strerror(rv, errbuf, sizeof(errbuf))),
2731+
rv == APR_SUCCESS);
27002732

27012733
for (i = 0; i < NUM_THREADS; ++i) {
27022734
randbytes[i] = apr_pcalloc(pool, 800);

0 commit comments

Comments
 (0)