aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeoff Thorpe <geoff@openssl.org>2001-04-30 15:24:41 +0000
committerGeoff Thorpe <geoff@openssl.org>2001-04-30 15:24:41 +0000
commit7ae551fd03b447e41d3a74e803a711350383ebc4 (patch)
treef0052965089d923ade8bb8bd45fe8afd28d5b466
parentc2e45f6ddf9219735e85d9b658a94e42c37ec0a2 (diff)
downloadopenssl-7ae551fd03b447e41d3a74e803a711350383ebc4.tar.gz
In RSA, DSA, DH, and RAND - if the "***_new()" function fails because the
ENGINE code does not return a default, set an error.
-rw-r--r--crypto/dh/dh_lib.c1
-rw-r--r--crypto/dsa/dsa_lib.c1
-rw-r--r--crypto/rand/rand.h4
-rw-r--r--crypto/rand/rand_err.c1
-rw-r--r--crypto/rand/rand_lib.c4
-rw-r--r--crypto/rsa/rsa_lib.c1
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 <stdio.h>
#include <time.h>
+#include "cryptlib.h"
#include <openssl/rand.h>
#include <openssl/engine.h>
@@ -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;
}