diff options
author | Kurt Roeckx <kurt@roeckx.be> | 2016-07-12 15:50:06 +0200 |
---|---|---|
committer | Kurt Roeckx <kurt@roeckx.be> | 2016-07-20 19:20:53 +0200 |
commit | 69588edbaa424beb71c6a9b1be416588232cb78c (patch) | |
tree | bc2d601241ea428fac0bc35d215b3964f0fce199 /crypto/err | |
parent | 8cc44d970ced1004db0727d7a7b3e2709c442e55 (diff) |
Check for errors allocating the error strings.
Reviewed-by: Richard Levitte <levitte@openssl.org>
GH: #1330
Diffstat (limited to 'crypto/err')
-rw-r--r-- | crypto/err/err.c | 12 | ||||
-rw-r--r-- | crypto/err/err_all.c | 70 |
2 files changed, 45 insertions, 37 deletions
diff --git a/crypto/err/err.c b/crypto/err/err.c index ad1ccd10d0..dc721c2e08 100644 --- a/crypto/err/err.c +++ b/crypto/err/err.c @@ -283,10 +283,11 @@ void err_cleanup(void) err_string_lock = NULL; } -void ERR_load_ERR_strings(void) +int ERR_load_ERR_strings(void) { #ifndef OPENSSL_NO_ERR - RUN_ONCE(&err_string_init, do_err_strings_init); + if (!RUN_ONCE(&err_string_init, do_err_strings_init)) + return 0; err_load_strings(0, ERR_str_libraries); err_load_strings(0, ERR_str_reasons); @@ -294,6 +295,7 @@ void ERR_load_ERR_strings(void) build_SYS_str_reasons(); err_load_strings(ERR_LIB_SYS, SYS_str_reasons); #endif + return 1; } static void err_load_strings(int lib, ERR_STRING_DATA *str) @@ -312,10 +314,12 @@ static void err_load_strings(int lib, ERR_STRING_DATA *str) CRYPTO_THREAD_unlock(err_string_lock); } -void ERR_load_strings(int lib, ERR_STRING_DATA *str) +int ERR_load_strings(int lib, ERR_STRING_DATA *str) { - ERR_load_ERR_strings(); + if (ERR_load_ERR_strings() == 0) + return 0; err_load_strings(lib, str); + return 1; } int ERR_unload_strings(int lib, ERR_STRING_DATA *str) diff --git a/crypto/err/err_all.c b/crypto/err/err_all.c index f617dd1a0d..3b1304f8e0 100644 --- a/crypto/err/err_all.c +++ b/crypto/err/err_all.c @@ -40,66 +40,70 @@ #include <openssl/async.h> #include <openssl/kdf.h> -void err_load_crypto_strings_int(void) +int err_load_crypto_strings_int(void) { + if ( #ifdef OPENSSL_FIPS - FIPS_set_error_callbacks(ERR_put_error, ERR_add_error_vdata); + FIPS_set_error_callbacks(ERR_put_error, ERR_add_error_vdata) == 0 || #endif #ifndef OPENSSL_NO_ERR - ERR_load_ERR_strings(); /* include error strings for SYSerr */ - ERR_load_BN_strings(); + ERR_load_ERR_strings() == 0 || /* include error strings for SYSerr */ + ERR_load_BN_strings() == 0 || # ifndef OPENSSL_NO_RSA - ERR_load_RSA_strings(); + ERR_load_RSA_strings() == 0 || # endif # ifndef OPENSSL_NO_DH - ERR_load_DH_strings(); + ERR_load_DH_strings() == 0 || # endif - ERR_load_EVP_strings(); - ERR_load_BUF_strings(); - ERR_load_OBJ_strings(); - ERR_load_PEM_strings(); + ERR_load_EVP_strings() == 0 || + ERR_load_BUF_strings() == 0 || + ERR_load_OBJ_strings() == 0 || + ERR_load_PEM_strings() == 0 || # ifndef OPENSSL_NO_DSA - ERR_load_DSA_strings(); + ERR_load_DSA_strings() == 0 || # endif - ERR_load_X509_strings(); - ERR_load_ASN1_strings(); - ERR_load_CONF_strings(); - ERR_load_CRYPTO_strings(); + ERR_load_X509_strings() == 0 || + ERR_load_ASN1_strings() == 0 || + ERR_load_CONF_strings() == 0 || + ERR_load_CRYPTO_strings() == 0 || # ifndef OPENSSL_NO_COMP - ERR_load_COMP_strings(); + ERR_load_COMP_strings() == 0 || # endif # ifndef OPENSSL_NO_EC - ERR_load_EC_strings(); + ERR_load_EC_strings() == 0 || # endif - /* skip ERR_load_SSL_strings() because it is not in this library */ - ERR_load_BIO_strings(); - ERR_load_PKCS7_strings(); - ERR_load_X509V3_strings(); - ERR_load_PKCS12_strings(); - ERR_load_RAND_strings(); - ERR_load_DSO_strings(); + /* skip ERR_load_SSL_strings() because it is not in this library */ + ERR_load_BIO_strings() == 0 || + ERR_load_PKCS7_strings() == 0 || + ERR_load_X509V3_strings() == 0 || + ERR_load_PKCS12_strings() == 0 || + ERR_load_RAND_strings() == 0 || + ERR_load_DSO_strings() == 0 || # ifndef OPENSSL_NO_TS - ERR_load_TS_strings(); + ERR_load_TS_strings() == 0 || # endif # ifndef OPENSSL_NO_ENGINE - ERR_load_ENGINE_strings(); + ERR_load_ENGINE_strings() == 0 || # endif # ifndef OPENSSL_NO_OCSP - ERR_load_OCSP_strings(); + ERR_load_OCSP_strings() == 0 || # endif #ifndef OPENSSL_NO_UI - ERR_load_UI_strings(); + ERR_load_UI_strings() == 0 || #endif # ifdef OPENSSL_FIPS - ERR_load_FIPS_strings(); + ERR_load_FIPS_strings() == 0 || # endif # ifndef OPENSSL_NO_CMS - ERR_load_CMS_strings(); + ERR_load_CMS_strings() == 0 || # endif # ifndef OPENSSL_NO_CT - ERR_load_CT_strings(); + ERR_load_CT_strings() == 0 || # endif - ERR_load_ASYNC_strings(); + ERR_load_ASYNC_strings() == 0 || #endif - ERR_load_KDF_strings(); + ERR_load_KDF_strings() == 0) + return 0; + + return 1; } |