summaryrefslogtreecommitdiffstats
path: root/crypto/err
diff options
context:
space:
mode:
authorKurt Roeckx <kurt@roeckx.be>2016-07-12 15:50:06 +0200
committerKurt Roeckx <kurt@roeckx.be>2016-07-20 19:20:53 +0200
commit69588edbaa424beb71c6a9b1be416588232cb78c (patch)
treebc2d601241ea428fac0bc35d215b3964f0fce199 /crypto/err
parent8cc44d970ced1004db0727d7a7b3e2709c442e55 (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.c12
-rw-r--r--crypto/err/err_all.c70
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;
}