summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorben <ben>2002-01-22 22:29:39 +0000
committerben <ben>2002-01-22 22:29:39 +0000
commit9ad38f704d04916ec2744f456d105a2ff26b6b65 (patch)
treeae587f6f386f044a4ade7600d8b9ebd6d9190861
parent1debcd5c22c002efdfac90b05a78f7ad135bfdf1 (diff)
downloadopenssl-9ad38f704d04916ec2744f456d105a2ff26b6b65.tar.gz
Make no config file not an error. Move /dev/crypto config to ctrl.
-rw-r--r--crypto/bio/bio.h2
-rw-r--r--crypto/bio/bio_err.c1
-rw-r--r--crypto/bio/bss_file.c5
-rw-r--r--crypto/conf/conf.h1
-rw-r--r--crypto/conf/conf_def.c5
-rw-r--r--crypto/conf/conf_err.c1
-rw-r--r--crypto/conf/conf_mall.c5
-rw-r--r--crypto/engine/hw_openbsd_dev_crypto.c32
-rw-r--r--crypto/err/err.c7
-rw-r--r--crypto/err/err.h1
10 files changed, 46 insertions, 14 deletions
diff --git a/crypto/bio/bio.h b/crypto/bio/bio.h
index 4fa420a6b..44861f393 100644
--- a/crypto/bio/bio.h
+++ b/crypto/bio/bio.h
@@ -618,7 +618,6 @@ int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args);
* made after this point may be overwritten when the script is next run.
*/
void ERR_load_BIO_strings(void);
-
/* Error codes for the BIO functions. */
/* Function codes. */
@@ -673,6 +672,7 @@ void ERR_load_BIO_strings(void);
#define BIO_R_NO_HOSTNAME_SPECIFIED 112
#define BIO_R_NO_PORT_DEFINED 113
#define BIO_R_NO_PORT_SPECIFIED 114
+#define BIO_R_NO_SUCH_FILE 128
#define BIO_R_NULL_PARAMETER 115
#define BIO_R_TAG_MISMATCH 116
#define BIO_R_UNABLE_TO_BIND_SOCKET 117
diff --git a/crypto/bio/bio_err.c b/crypto/bio/bio_err.c
index 927b1ac47..99ca3cd0d 100644
--- a/crypto/bio/bio_err.c
+++ b/crypto/bio/bio_err.c
@@ -120,6 +120,7 @@ static ERR_STRING_DATA BIO_str_reasons[]=
{BIO_R_NO_HOSTNAME_SPECIFIED ,"no hostname specified"},
{BIO_R_NO_PORT_DEFINED ,"no port defined"},
{BIO_R_NO_PORT_SPECIFIED ,"no port specified"},
+{BIO_R_NO_SUCH_FILE ,"no such file"},
{BIO_R_NULL_PARAMETER ,"null parameter"},
{BIO_R_TAG_MISMATCH ,"tag mismatch"},
{BIO_R_UNABLE_TO_BIND_SOCKET ,"unable to bind socket"},
diff --git a/crypto/bio/bss_file.c b/crypto/bio/bss_file.c
index 0dee7fa34..e3af93637 100644
--- a/crypto/bio/bss_file.c
+++ b/crypto/bio/bss_file.c
@@ -103,7 +103,10 @@ BIO *BIO_new_file(const char *filename, const char *mode)
{
SYSerr(SYS_F_FOPEN,get_last_sys_error());
ERR_add_error_data(5,"fopen('",filename,"','",mode,"')");
- BIOerr(BIO_F_BIO_NEW_FILE,ERR_R_SYS_LIB);
+ if(errno == ENOENT)
+ BIOerr(BIO_F_BIO_NEW_FILE,BIO_R_NO_SUCH_FILE);
+ else
+ BIOerr(BIO_F_BIO_NEW_FILE,ERR_R_SYS_LIB);
return(NULL);
}
if ((ret=BIO_new(BIO_s_file_internal())) == NULL)
diff --git a/crypto/conf/conf.h b/crypto/conf/conf.h
index a0bbeb4d5..a179a5f61 100644
--- a/crypto/conf/conf.h
+++ b/crypto/conf/conf.h
@@ -232,6 +232,7 @@ void ERR_load_CONF_strings(void);
#define CONF_R_NO_CONF 105
#define CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE 106
#define CONF_R_NO_SECTION 107
+#define CONF_R_NO_SUCH_FILE 114
#define CONF_R_NO_VALUE 108
#define CONF_R_UNABLE_TO_CREATE_NEW_SECTION 103
#define CONF_R_UNKNOWN_MODULE_NAME 113
diff --git a/crypto/conf/conf_def.c b/crypto/conf/conf_def.c
index 04d128bc7..20b0760fc 100644
--- a/crypto/conf/conf_def.c
+++ b/crypto/conf/conf_def.c
@@ -192,7 +192,10 @@ static int def_load(CONF *conf, const char *name, long *line)
#endif
if (in == NULL)
{
- CONFerr(CONF_F_CONF_LOAD,ERR_R_SYS_LIB);
+ if(ERR_GET_REASON(ERR_peek_top_error()) == BIO_R_NO_SUCH_FILE)
+ CONFerr(CONF_F_CONF_LOAD,CONF_R_NO_SUCH_FILE);
+ else
+ CONFerr(CONF_F_CONF_LOAD,ERR_R_SYS_LIB);
return 0;
}
diff --git a/crypto/conf/conf_err.c b/crypto/conf/conf_err.c
index e1bd8b3b2..ee07bfe9d 100644
--- a/crypto/conf/conf_err.c
+++ b/crypto/conf/conf_err.c
@@ -100,6 +100,7 @@ static ERR_STRING_DATA CONF_str_reasons[]=
{CONF_R_NO_CONF ,"no conf"},
{CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE ,"no conf or environment variable"},
{CONF_R_NO_SECTION ,"no section"},
+{CONF_R_NO_SUCH_FILE ,"no such file"},
{CONF_R_NO_VALUE ,"no value"},
{CONF_R_UNABLE_TO_CREATE_NEW_SECTION ,"unable to create new section"},
{CONF_R_UNKNOWN_MODULE_NAME ,"unknown module name"},
diff --git a/crypto/conf/conf_mall.c b/crypto/conf/conf_mall.c
index 814d5df87..59c7cfb96 100644
--- a/crypto/conf/conf_mall.c
+++ b/crypto/conf/conf_mall.c
@@ -92,9 +92,10 @@ void OPENSSL_config(void)
if (!file)
return;
- ret = CONF_modules_load_file(file, "openssl_config", 0);
+ ret=CONF_modules_load_file(file, "openssl_config", 0) <= 0
+ && ERR_GET_REASON(ERR_peek_top_error()) != CONF_R_NO_SUCH_FILE;
OPENSSL_free(file);
- if (ret <= 0)
+ if (ret)
{
BIO *bio_err;
ERR_load_crypto_strings();
diff --git a/crypto/engine/hw_openbsd_dev_crypto.c b/crypto/engine/hw_openbsd_dev_crypto.c
index 8085323ed..f946389b8 100644
--- a/crypto/engine/hw_openbsd_dev_crypto.c
+++ b/crypto/engine/hw_openbsd_dev_crypto.c
@@ -96,12 +96,25 @@ static const char dev_crypto_name[] = "OpenBSD /dev/crypto";
static long allow_misaligned;
-static int init_conf(CONF_IMODULE *md,const CONF *conf)
+#define DEV_CRYPTO_CMD_ALLOW_MISALIGNED ENGINE_CMD_BASE
+static const ENGINE_CMD_DEFN dev_crypto_cmd_defns[]=
{
- if(!NCONF_get_number(conf,CONF_imodule_get_value(md),"allow_misaligned",
- &allow_misaligned))
- return 0;
- printf("allow misaligned=%ld\n",allow_misaligned);
+ { DEV_CRYPTO_CMD_ALLOW_MISALIGNED,
+ "allow_misaligned",
+ "Permit misaligned data to be used",
+ ENGINE_CMD_FLAG_NUMERIC },
+ { 0, NULL, NULL, 0 }
+ };
+
+static int dev_crypto_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)())
+ {
+ switch(cmd)
+ {
+ case DEV_CRYPTO_CMD_ALLOW_MISALIGNED:
+ allow_misaligned=i;
+ printf("allow misaligned=%ld\n",allow_misaligned);
+ break;
+ }
return 1;
}
@@ -110,11 +123,12 @@ static ENGINE *engine_openbsd_dev_crypto(void)
{
ENGINE *engine=ENGINE_new();
- CONF_module_add(dev_crypto_id,init_conf,NULL);
if(!ENGINE_set_id(engine, dev_crypto_id) ||
- !ENGINE_set_name(engine, dev_crypto_name) ||
- !ENGINE_set_ciphers(engine, dev_crypto_ciphers) ||
- !ENGINE_set_digests(engine, dev_crypto_digests))
+ !ENGINE_set_name(engine, dev_crypto_name) ||
+ !ENGINE_set_ciphers(engine, dev_crypto_ciphers) ||
+ !ENGINE_set_digests(engine, dev_crypto_digests) ||
+ !ENGINE_set_ctrl_function(engine, dev_crypto_ctrl) ||
+ !ENGINE_set_cmd_defns(engine, dev_crypto_cmd_defns))
{
ENGINE_free(engine);
return NULL;
diff --git a/crypto/err/err.c b/crypto/err/err.c
index f38d1a61d..1b1e9bbcb 100644
--- a/crypto/err/err.c
+++ b/crypto/err/err.c
@@ -679,6 +679,13 @@ unsigned long ERR_get_error_line_data(const char **file, int *line,
unsigned long ERR_peek_error(void)
{ return(get_error_values(0,NULL,NULL,NULL,NULL)); }
+unsigned long ERR_peek_top_error(void)
+ {
+ ERR_STATE *es=ERR_get_state();
+
+ return es->err_buffer[es->top];
+ }
+
unsigned long ERR_peek_error_line(const char **file,
int *line)
{ return(get_error_values(0,file,line,NULL,NULL)); }
diff --git a/crypto/err/err.h b/crypto/err/err.h
index c20546be5..4456e0e97 100644
--- a/crypto/err/err.h
+++ b/crypto/err/err.h
@@ -243,6 +243,7 @@ unsigned long ERR_get_error_line(const char **file,int *line);
unsigned long ERR_get_error_line_data(const char **file,int *line,
const char **data, int *flags);
unsigned long ERR_peek_error(void );
+unsigned long ERR_peek_top_error(void);
unsigned long ERR_peek_error_line(const char **file,int *line);
unsigned long ERR_peek_error_line_data(const char **file,int *line,
const char **data,int *flags);