X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=test%2Fcontext_internal_test.c;h=8fea53fee168d2dcd0e230f31dd735511ae3bd1b;hp=0b786adf6754848c6a558c5f2a8c15fc8b1fa855;hb=HEAD;hpb=eec0ad10b943bc10690358cf2db32ca06c3e81a0 diff --git a/test/context_internal_test.c b/test/context_internal_test.c index 0b786adf67..c829d8111d 100644 --- a/test/context_internal_test.c +++ b/test/context_internal_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2019-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -12,70 +12,72 @@ #include "internal/cryptlib.h" #include "testutil.h" -/* - * Everything between BEGIN EXAMPLE and END EXAMPLE is copied from - * doc/internal/man3/ossl_lib_ctx_get_data.pod - */ +static int test_set0_default(void) +{ + OSSL_LIB_CTX *global = OSSL_LIB_CTX_get0_global_default(); + OSSL_LIB_CTX *local = OSSL_LIB_CTX_new(); + OSSL_LIB_CTX *prev; + int testresult = 0; -/* - * ====================================================================== - * BEGIN EXAMPLE - */ + if (!TEST_ptr(global) + || !TEST_ptr(local) + || !TEST_ptr_eq(global, OSSL_LIB_CTX_set0_default(NULL))) + goto err; -typedef struct foo_st { - int i; - void *data; -} FOO; + /* Check we can change the local default context */ + if (!TEST_ptr(prev = OSSL_LIB_CTX_set0_default(local)) + || !TEST_ptr_eq(global, prev)) + goto err; -static void *foo_new(OSSL_LIB_CTX *ctx) -{ - FOO *ptr = OPENSSL_zalloc(sizeof(*ptr)); - if (ptr != NULL) - ptr->i = 42; - return ptr; -} -static void foo_free(void *ptr) -{ - OPENSSL_free(ptr); -} -static const OSSL_LIB_CTX_METHOD foo_method = { - foo_new, - foo_free -}; + /* Calling OSSL_LIB_CTX_set0_default() with a NULL should be a no-op */ + if (!TEST_ptr_eq(local, OSSL_LIB_CTX_set0_default(NULL))) + goto err; -/* - * END EXAMPLE - * ====================================================================== - */ + /* Global default should be unchanged */ + if (!TEST_ptr_eq(global, OSSL_LIB_CTX_get0_global_default())) + goto err; -static int test_context(OSSL_LIB_CTX *ctx) -{ - FOO *data = NULL; + /* Check we can swap back to the global default */ + if (!TEST_ptr(prev = OSSL_LIB_CTX_set0_default(global)) + || !TEST_ptr_eq(local, prev)) + goto err; - return TEST_ptr(data = ossl_lib_ctx_get_data(ctx, 0, &foo_method)) - /* OPENSSL_zalloc in foo_new() initialized it to zero */ - && TEST_int_eq(data->i, 42); + testresult = 1; + err: + OSSL_LIB_CTX_free(local); + return testresult; } -static int test_app_context(void) +static int test_set_get_conf_diagnostics(void) { - OSSL_LIB_CTX *ctx = NULL; - int result = - TEST_ptr(ctx = OSSL_LIB_CTX_new()) - && test_context(ctx); + OSSL_LIB_CTX *ctx = OSSL_LIB_CTX_new(); + int res = 0; - OSSL_LIB_CTX_free(ctx); - return result; -} + if (!TEST_ptr(ctx)) + goto err; -static int test_def_context(void) -{ - return test_context(NULL); + if (!TEST_false(OSSL_LIB_CTX_get_conf_diagnostics(ctx))) + goto err; + + OSSL_LIB_CTX_set_conf_diagnostics(ctx, 1); + + if (!TEST_true(OSSL_LIB_CTX_get_conf_diagnostics(ctx))) + goto err; + + OSSL_LIB_CTX_set_conf_diagnostics(ctx, 0); + + if (!TEST_false(OSSL_LIB_CTX_get_conf_diagnostics(ctx))) + goto err; + + res = 1; + err: + OSSL_LIB_CTX_free(ctx); + return res; } int setup_tests(void) { - ADD_TEST(test_app_context); - ADD_TEST(test_def_context); + ADD_TEST(test_set0_default); + ADD_TEST(test_set_get_conf_diagnostics); return 1; }