diff options
author | Richard Levitte <levitte@openssl.org> | 2020-01-15 14:09:54 +0100 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2020-01-21 14:06:54 +0100 |
commit | 7b131de2bb2be8582c6dfc50bdd3cbc49e1a08be (patch) | |
tree | 1465d32d6986b8f16dcc13471066778740da4e86 /crypto/provider_core.c | |
parent | 0b9dd3842f9bbe7a7c290187056a96827d848f52 (diff) |
PROV: Add support for error queue marks and implement in FIPS module
This propagates ERR_set_mark(), and ERR_clear_last_mark() and
ERR_pop_to_mark() for provider use.
Reviewed-by: Nicola Tuveri <nic.tuv@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/10803)
Diffstat (limited to 'crypto/provider_core.c')
-rw-r--r-- | crypto/provider_core.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/crypto/provider_core.c b/crypto/provider_core.c index 2f2d69a0c3..cac325407f 100644 --- a/crypto/provider_core.c +++ b/crypto/provider_core.c @@ -774,6 +774,9 @@ static OSSL_core_get_library_context_fn core_get_libctx; static OSSL_core_new_error_fn core_new_error; static OSSL_core_set_error_debug_fn core_set_error_debug; static OSSL_core_vset_error_fn core_vset_error; +static OSSL_core_set_error_mark_fn core_set_error_mark; +static OSSL_core_clear_last_error_mark_fn core_clear_last_error_mark; +static OSSL_core_pop_error_to_mark_fn core_pop_error_to_mark; #endif static const OSSL_PARAM *core_gettable_params(const OSSL_PROVIDER *prov) @@ -857,6 +860,21 @@ static void core_vset_error(const OSSL_PROVIDER *prov, ERR_vset_error(prov->error_lib, (int)reason, fmt, args); } } + +static int core_set_error_mark(const OSSL_PROVIDER *prov) +{ + return ERR_set_mark(); +} + +static int core_clear_last_error_mark(const OSSL_PROVIDER *prov) +{ + return ERR_clear_last_mark(); +} + +static int core_pop_error_to_mark(const OSSL_PROVIDER *prov) +{ + return ERR_pop_to_mark(); +} #endif /* @@ -872,6 +890,11 @@ static const OSSL_DISPATCH core_dispatch_[] = { { OSSL_FUNC_CORE_NEW_ERROR, (void (*)(void))core_new_error }, { OSSL_FUNC_CORE_SET_ERROR_DEBUG, (void (*)(void))core_set_error_debug }, { OSSL_FUNC_CORE_VSET_ERROR, (void (*)(void))core_vset_error }, + { OSSL_FUNC_CORE_SET_ERROR_MARK, (void (*)(void))core_set_error_mark }, + { OSSL_FUNC_CORE_CLEAR_LAST_ERROR_MARK, + (void (*)(void))core_clear_last_error_mark }, + { OSSL_FUNC_CORE_POP_ERROR_TO_MARK, + (void (*)(void))core_pop_error_to_mark }, { OSSL_FUNC_BIO_NEW_FILE, (void (*)(void))BIO_new_file }, { OSSL_FUNC_BIO_NEW_MEMBUF, (void (*)(void))BIO_new_mem_buf }, { OSSL_FUNC_BIO_READ_EX, (void (*)(void))BIO_read_ex }, |