aboutsummaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorBodo Möller <bodo@openssl.org>2002-01-24 16:16:43 +0000
committerBodo Möller <bodo@openssl.org>2002-01-24 16:16:43 +0000
commita14e2d9dfe0bc17800a5ab6b0439a3db50702586 (patch)
tree8c2cd60a3175e666ca68800fc0d245e65af1d496 /crypto
parenta8b94d64095204817c7c561d069322d4df12010e (diff)
downloadopenssl-a14e2d9dfe0bc17800a5ab6b0439a3db50702586.tar.gz
New functions
ERR_peek_last_error ERR_peek_last_error_line ERR_peek_last_error_line_data (supersedes ERR_peek_top_error). Rename OPENSSL_NO_OLD_DES_SUPPORT into OPENSSL_DISABLE_OLD_DES_SUPPORT because OPENSSL_NO_... indicates disabled algorithms (according to mkdef.pl).
Diffstat (limited to 'crypto')
-rw-r--r--crypto/bio/bss_file.c2
-rw-r--r--crypto/conf/conf_def.c2
-rw-r--r--crypto/conf/conf_mall.c18
-rw-r--r--crypto/des/des.h2
-rw-r--r--crypto/err/err.c47
-rw-r--r--crypto/err/err.h9
6 files changed, 53 insertions, 27 deletions
diff --git a/crypto/bio/bss_file.c b/crypto/bio/bss_file.c
index e3af936374..8b3ff278d9 100644
--- a/crypto/bio/bss_file.c
+++ b/crypto/bio/bss_file.c
@@ -103,7 +103,7 @@ 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,"')");
- if(errno == ENOENT)
+ 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);
diff --git a/crypto/conf/conf_def.c b/crypto/conf/conf_def.c
index 20b0760fcd..31f2766246 100644
--- a/crypto/conf/conf_def.c
+++ b/crypto/conf/conf_def.c
@@ -192,7 +192,7 @@ static int def_load(CONF *conf, const char *name, long *line)
#endif
if (in == NULL)
{
- if(ERR_GET_REASON(ERR_peek_top_error()) == BIO_R_NO_SUCH_FILE)
+ if (ERR_GET_REASON(ERR_peek_last_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);
diff --git a/crypto/conf/conf_mall.c b/crypto/conf/conf_mall.c
index 59c7cfb966..01cff6946a 100644
--- a/crypto/conf/conf_mall.c
+++ b/crypto/conf/conf_mall.c
@@ -72,16 +72,18 @@ void OPENSSL_load_builtin_modules(void)
ENGINE_add_conf_module();
}
+#if 0 /* not yet */
/* This is the automatic configuration loader: it is called automatically by
* OpenSSL when any of a number of standard initialisation functions are called,
* unless this is overridden by calling OPENSSL_no_config()
*/
+#endif
static int openssl_configured = 0;
void OPENSSL_config(void)
{
- int ret;
+ int err_exit = 0;
char *file;
if (openssl_configured)
return;
@@ -92,10 +94,17 @@ void OPENSSL_config(void)
if (!file)
return;
- ret=CONF_modules_load_file(file, "openssl_config", 0) <= 0
- && ERR_GET_REASON(ERR_peek_top_error()) != CONF_R_NO_SUCH_FILE;
+ ERR_clear_error();
+ if (CONF_modules_load_file(file, "openssl_config", 0) <= 0)
+ {
+ if (ERR_GET_REASON(ERR_peek_last_error()) == CONF_R_NO_SUCH_FILE)
+ ERR_clear_error();
+ else
+ err_exit = 1;
+ }
+
OPENSSL_free(file);
- if (ret)
+ if (err_exit)
{
BIO *bio_err;
ERR_load_crypto_strings();
@@ -109,7 +118,6 @@ void OPENSSL_config(void)
}
return;
-
}
void OPENSSL_no_config()
diff --git a/crypto/des/des.h b/crypto/des/des.h
index 8ec7b90f85..237113129d 100644
--- a/crypto/des/des.h
+++ b/crypto/des/des.h
@@ -66,7 +66,7 @@
#include <openssl/opensslconf.h> /* DES_LONG */
#include <openssl/e_os2.h> /* OPENSSL_EXTERN */
-#ifndef OPENSSL_NO_OLD_DES_SUPPORT
+#ifndef OPENSSL_DISABLE_OLD_DES_SUPPORT
# include <openssl/des_old.h>
#endif
diff --git a/crypto/err/err.c b/crypto/err/err.c
index 1b1e9bbcb0..c909c3f4dc 100644
--- a/crypto/err/err.c
+++ b/crypto/err/err.c
@@ -318,7 +318,7 @@ static int err_cmp(const void *a_void, const void *b_void);
static unsigned long pid_hash(const void *pid_void);
/* static int pid_cmp(ERR_STATE *a,ERR_STATE *pid); */
static int pid_cmp(const void *a_void,const void *pid_void);
-static unsigned long get_error_values(int inc,const char **file,int *line,
+static unsigned long get_error_values(int inc,int top,const char **file,int *line,
const char **data,int *flags);
/* The internal functions used in the "err_defaults" implementation */
@@ -666,35 +666,37 @@ void ERR_clear_error(void)
unsigned long ERR_get_error(void)
- { return(get_error_values(1,NULL,NULL,NULL,NULL)); }
+ { return(get_error_values(1,0,NULL,NULL,NULL,NULL)); }
unsigned long ERR_get_error_line(const char **file,
int *line)
- { return(get_error_values(1,file,line,NULL,NULL)); }
+ { return(get_error_values(1,0,file,line,NULL,NULL)); }
unsigned long ERR_get_error_line_data(const char **file, int *line,
const char **data, int *flags)
- { return(get_error_values(1,file,line,data,flags)); }
+ { return(get_error_values(1,0,file,line,data,flags)); }
unsigned long ERR_peek_error(void)
- { return(get_error_values(0,NULL,NULL,NULL,NULL)); }
+ { return(get_error_values(0,0,NULL,NULL,NULL,NULL)); }
-unsigned long ERR_peek_top_error(void)
- {
- ERR_STATE *es=ERR_get_state();
+unsigned long ERR_peek_last_error(void)
+ { return(get_error_values(0,1,NULL,NULL,NULL,NULL)); }
- return es->err_buffer[es->top];
- }
+unsigned long ERR_peek_error_line(const char **file, int *line)
+ { return(get_error_values(0,0,file,line,NULL,NULL)); }
-unsigned long ERR_peek_error_line(const char **file,
- int *line)
- { return(get_error_values(0,file,line,NULL,NULL)); }
+unsigned long ERR_peek_last_error_line(const char **file, int *line)
+ { return(get_error_values(0,1,file,line,NULL,NULL)); }
unsigned long ERR_peek_error_line_data(const char **file, int *line,
const char **data, int *flags)
- { return(get_error_values(0,file,line,data,flags)); }
+ { return(get_error_values(0,0,file,line,data,flags)); }
+
+unsigned long ERR_peek_last_error_line_data(const char **file, int *line,
+ const char **data, int *flags)
+ { return(get_error_values(0,1,file,line,data,flags)); }
-static unsigned long get_error_values(int inc, const char **file, int *line,
+static unsigned long get_error_values(int inc, int top, const char **file, int *line,
const char **data, int *flags)
{
int i=0;
@@ -703,8 +705,21 @@ static unsigned long get_error_values(int inc, const char **file, int *line,
es=ERR_get_state();
+ if (inc && top)
+ {
+ if (file) *file = "";
+ if (line) *line = 0;
+ if (data) *data = "";
+ if (flags) *flags = 0;
+
+ return ERR_R_INTERNAL_ERROR;
+ }
+
if (es->bottom == es->top) return 0;
- i=(es->bottom+1)%ERR_NUM_ERRORS;
+ if (top)
+ i=(es->bottom+1)%ERR_NUM_ERRORS; /* last error */
+ else
+ i=(es->bottom+1)%ERR_NUM_ERRORS; /* first error */
ret=es->err_buffer[i];
if (inc)
diff --git a/crypto/err/err.h b/crypto/err/err.h
index 4456e0e971..adf52e21b7 100644
--- a/crypto/err/err.h
+++ b/crypto/err/err.h
@@ -238,15 +238,18 @@ typedef struct ERR_string_data_st
void ERR_put_error(int lib, int func,int reason,const char *file,int line);
void ERR_set_error_data(char *data,int flags);
-unsigned long ERR_get_error(void );
+unsigned long ERR_get_error(void);
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_last_error(void);
+unsigned long ERR_peek_error(void);
unsigned long ERR_peek_error_line(const char **file,int *line);
+unsigned long ERR_peek_last_error_line(const char **file,int *line);
unsigned long ERR_peek_error_line_data(const char **file,int *line,
const char **data,int *flags);
+unsigned long ERR_peek_last_error_line_data(const char **file,int *line,
+ const char **data,int *flags);
void ERR_clear_error(void );
char *ERR_error_string(unsigned long e,char *buf);
void ERR_error_string_n(unsigned long e, char *buf, size_t len);