From 7ae551fd03b447e41d3a74e803a711350383ebc4 Mon Sep 17 00:00:00 2001 From: Geoff Thorpe Date: Mon, 30 Apr 2001 15:24:41 +0000 Subject: [PATCH] In RSA, DSA, DH, and RAND - if the "***_new()" function fails because the ENGINE code does not return a default, set an error. --- crypto/dh/dh_lib.c | 1 + crypto/dsa/dsa_lib.c | 1 + crypto/rand/rand.h | 4 ++-- crypto/rand/rand_err.c | 1 + crypto/rand/rand_lib.c | 4 ++++ crypto/rsa/rsa_lib.c | 1 + 6 files changed, 10 insertions(+), 2 deletions(-) diff --git a/crypto/dh/dh_lib.c b/crypto/dh/dh_lib.c index c0a2472751..b3c609e8be 100644 --- a/crypto/dh/dh_lib.c +++ b/crypto/dh/dh_lib.c @@ -148,6 +148,7 @@ DH *DH_new_method(ENGINE *engine) { if((ret->engine=ENGINE_get_default_DH()) == NULL) { + DHerr(DH_F_DH_NEW,ERR_LIB_ENGINE); OPENSSL_free(ret); return NULL; } diff --git a/crypto/dsa/dsa_lib.c b/crypto/dsa/dsa_lib.c index 2abdd08c90..1b33705f46 100644 --- a/crypto/dsa/dsa_lib.c +++ b/crypto/dsa/dsa_lib.c @@ -152,6 +152,7 @@ DSA *DSA_new_method(ENGINE *engine) { if((ret->engine=ENGINE_get_default_DSA()) == NULL) { + DSAerr(DSA_F_DSA_NEW,ERR_LIB_ENGINE); OPENSSL_free(ret); return NULL; } diff --git a/crypto/rand/rand.h b/crypto/rand/rand.h index 2252186ecd..0bfccac18f 100644 --- a/crypto/rand/rand.h +++ b/crypto/rand/rand.h @@ -96,7 +96,6 @@ int RAND_status(void); int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes); int RAND_egd(const char *path); int RAND_egd_bytes(const char *path,int bytes); -void ERR_load_RAND_strings(void); int RAND_poll(void); #if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32) @@ -110,10 +109,12 @@ int RAND_event(UINT, WPARAM, LPARAM); /* The following lines are auto generated by the script mkerr.pl. Any changes * made after this point may be overwritten when the script is next run. */ +void ERR_load_RAND_strings(void); /* Error codes for the RAND functions. */ /* Function codes. */ +#define RAND_F_RAND_GET_RAND_METHOD 101 #define RAND_F_SSLEAY_RAND_BYTES 100 /* Reason codes. */ @@ -123,4 +124,3 @@ int RAND_event(UINT, WPARAM, LPARAM); } #endif #endif - diff --git a/crypto/rand/rand_err.c b/crypto/rand/rand_err.c index 6ffa1c4f25..b77267e213 100644 --- a/crypto/rand/rand_err.c +++ b/crypto/rand/rand_err.c @@ -66,6 +66,7 @@ #ifndef OPENSSL_NO_ERR static ERR_STRING_DATA RAND_str_functs[]= { +{ERR_PACK(0,RAND_F_RAND_GET_RAND_METHOD,0), "RAND_get_rand_method"}, {ERR_PACK(0,RAND_F_SSLEAY_RAND_BYTES,0), "SSLEAY_RAND_BYTES"}, {0,NULL} }; diff --git a/crypto/rand/rand_lib.c b/crypto/rand/rand_lib.c index 597c098d3e..38cea79938 100644 --- a/crypto/rand/rand_lib.c +++ b/crypto/rand/rand_lib.c @@ -58,6 +58,7 @@ #include #include +#include "cryptlib.h" #include #include @@ -86,7 +87,10 @@ const RAND_METHOD *RAND_get_rand_method(void) { if (rand_engine == NULL && (rand_engine = ENGINE_get_default_RAND()) == NULL) + { + RANDerr(RAND_F_RAND_GET_RAND_METHOD,ERR_LIB_ENGINE); return NULL; + } return ENGINE_get_RAND(rand_engine); } diff --git a/crypto/rsa/rsa_lib.c b/crypto/rsa/rsa_lib.c index d3a602f0a5..3a4760c8d4 100644 --- a/crypto/rsa/rsa_lib.c +++ b/crypto/rsa/rsa_lib.c @@ -166,6 +166,7 @@ RSA *RSA_new_method(ENGINE *engine) { if((ret->engine=ENGINE_get_default_RSA()) == NULL) { + RSAerr(RSA_F_RSA_NEW_METHOD,ERR_LIB_ENGINE); OPENSSL_free(ret); return NULL; }