提交 0fc5cf08 编写于 作者: B Ben Laurie

Make no config file not an error. Move /dev/crypto config to ctrl.

上级 f78d4a35
...@@ -618,7 +618,6 @@ int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args); ...@@ -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. * made after this point may be overwritten when the script is next run.
*/ */
void ERR_load_BIO_strings(void); void ERR_load_BIO_strings(void);
/* Error codes for the BIO functions. */ /* Error codes for the BIO functions. */
/* Function codes. */ /* Function codes. */
...@@ -673,6 +672,7 @@ void ERR_load_BIO_strings(void); ...@@ -673,6 +672,7 @@ void ERR_load_BIO_strings(void);
#define BIO_R_NO_HOSTNAME_SPECIFIED 112 #define BIO_R_NO_HOSTNAME_SPECIFIED 112
#define BIO_R_NO_PORT_DEFINED 113 #define BIO_R_NO_PORT_DEFINED 113
#define BIO_R_NO_PORT_SPECIFIED 114 #define BIO_R_NO_PORT_SPECIFIED 114
#define BIO_R_NO_SUCH_FILE 128
#define BIO_R_NULL_PARAMETER 115 #define BIO_R_NULL_PARAMETER 115
#define BIO_R_TAG_MISMATCH 116 #define BIO_R_TAG_MISMATCH 116
#define BIO_R_UNABLE_TO_BIND_SOCKET 117 #define BIO_R_UNABLE_TO_BIND_SOCKET 117
......
...@@ -120,6 +120,7 @@ static ERR_STRING_DATA BIO_str_reasons[]= ...@@ -120,6 +120,7 @@ static ERR_STRING_DATA BIO_str_reasons[]=
{BIO_R_NO_HOSTNAME_SPECIFIED ,"no hostname specified"}, {BIO_R_NO_HOSTNAME_SPECIFIED ,"no hostname specified"},
{BIO_R_NO_PORT_DEFINED ,"no port defined"}, {BIO_R_NO_PORT_DEFINED ,"no port defined"},
{BIO_R_NO_PORT_SPECIFIED ,"no port specified"}, {BIO_R_NO_PORT_SPECIFIED ,"no port specified"},
{BIO_R_NO_SUCH_FILE ,"no such file"},
{BIO_R_NULL_PARAMETER ,"null parameter"}, {BIO_R_NULL_PARAMETER ,"null parameter"},
{BIO_R_TAG_MISMATCH ,"tag mismatch"}, {BIO_R_TAG_MISMATCH ,"tag mismatch"},
{BIO_R_UNABLE_TO_BIND_SOCKET ,"unable to bind socket"}, {BIO_R_UNABLE_TO_BIND_SOCKET ,"unable to bind socket"},
......
...@@ -103,7 +103,10 @@ BIO *BIO_new_file(const char *filename, const char *mode) ...@@ -103,7 +103,10 @@ BIO *BIO_new_file(const char *filename, const char *mode)
{ {
SYSerr(SYS_F_FOPEN,get_last_sys_error()); SYSerr(SYS_F_FOPEN,get_last_sys_error());
ERR_add_error_data(5,"fopen('",filename,"','",mode,"')"); 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); return(NULL);
} }
if ((ret=BIO_new(BIO_s_file_internal())) == NULL) if ((ret=BIO_new(BIO_s_file_internal())) == NULL)
......
...@@ -232,6 +232,7 @@ void ERR_load_CONF_strings(void); ...@@ -232,6 +232,7 @@ void ERR_load_CONF_strings(void);
#define CONF_R_NO_CONF 105 #define CONF_R_NO_CONF 105
#define CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE 106 #define CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE 106
#define CONF_R_NO_SECTION 107 #define CONF_R_NO_SECTION 107
#define CONF_R_NO_SUCH_FILE 114
#define CONF_R_NO_VALUE 108 #define CONF_R_NO_VALUE 108
#define CONF_R_UNABLE_TO_CREATE_NEW_SECTION 103 #define CONF_R_UNABLE_TO_CREATE_NEW_SECTION 103
#define CONF_R_UNKNOWN_MODULE_NAME 113 #define CONF_R_UNKNOWN_MODULE_NAME 113
......
...@@ -192,7 +192,10 @@ static int def_load(CONF *conf, const char *name, long *line) ...@@ -192,7 +192,10 @@ static int def_load(CONF *conf, const char *name, long *line)
#endif #endif
if (in == NULL) 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; return 0;
} }
......
...@@ -100,6 +100,7 @@ static ERR_STRING_DATA CONF_str_reasons[]= ...@@ -100,6 +100,7 @@ static ERR_STRING_DATA CONF_str_reasons[]=
{CONF_R_NO_CONF ,"no conf"}, {CONF_R_NO_CONF ,"no conf"},
{CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE ,"no conf or environment variable"}, {CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE ,"no conf or environment variable"},
{CONF_R_NO_SECTION ,"no section"}, {CONF_R_NO_SECTION ,"no section"},
{CONF_R_NO_SUCH_FILE ,"no such file"},
{CONF_R_NO_VALUE ,"no value"}, {CONF_R_NO_VALUE ,"no value"},
{CONF_R_UNABLE_TO_CREATE_NEW_SECTION ,"unable to create new section"}, {CONF_R_UNABLE_TO_CREATE_NEW_SECTION ,"unable to create new section"},
{CONF_R_UNKNOWN_MODULE_NAME ,"unknown module name"}, {CONF_R_UNKNOWN_MODULE_NAME ,"unknown module name"},
......
...@@ -92,9 +92,10 @@ void OPENSSL_config(void) ...@@ -92,9 +92,10 @@ void OPENSSL_config(void)
if (!file) if (!file)
return; 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); OPENSSL_free(file);
if (ret <= 0) if (ret)
{ {
BIO *bio_err; BIO *bio_err;
ERR_load_crypto_strings(); ERR_load_crypto_strings();
......
...@@ -96,12 +96,25 @@ static const char dev_crypto_name[] = "OpenBSD /dev/crypto"; ...@@ -96,12 +96,25 @@ static const char dev_crypto_name[] = "OpenBSD /dev/crypto";
static long allow_misaligned; 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", { DEV_CRYPTO_CMD_ALLOW_MISALIGNED,
&allow_misaligned)) "allow_misaligned",
return 0; "Permit misaligned data to be used",
printf("allow misaligned=%ld\n",allow_misaligned); 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; return 1;
} }
...@@ -110,11 +123,12 @@ static ENGINE *engine_openbsd_dev_crypto(void) ...@@ -110,11 +123,12 @@ static ENGINE *engine_openbsd_dev_crypto(void)
{ {
ENGINE *engine=ENGINE_new(); ENGINE *engine=ENGINE_new();
CONF_module_add(dev_crypto_id,init_conf,NULL);
if(!ENGINE_set_id(engine, dev_crypto_id) || if(!ENGINE_set_id(engine, dev_crypto_id) ||
!ENGINE_set_name(engine, dev_crypto_name) || !ENGINE_set_name(engine, dev_crypto_name) ||
!ENGINE_set_ciphers(engine, dev_crypto_ciphers) || !ENGINE_set_ciphers(engine, dev_crypto_ciphers) ||
!ENGINE_set_digests(engine, dev_crypto_digests)) !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); ENGINE_free(engine);
return NULL; return NULL;
......
...@@ -679,6 +679,13 @@ unsigned long ERR_get_error_line_data(const char **file, int *line, ...@@ -679,6 +679,13 @@ unsigned long ERR_get_error_line_data(const char **file, int *line,
unsigned long ERR_peek_error(void) unsigned long ERR_peek_error(void)
{ return(get_error_values(0,NULL,NULL,NULL,NULL)); } { 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, unsigned long ERR_peek_error_line(const char **file,
int *line) int *line)
{ return(get_error_values(0,file,line,NULL,NULL)); } { return(get_error_values(0,file,line,NULL,NULL)); }
......
...@@ -243,6 +243,7 @@ unsigned long ERR_get_error_line(const char **file,int *line); ...@@ -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, unsigned long ERR_get_error_line_data(const char **file,int *line,
const char **data, int *flags); const char **data, int *flags);
unsigned long ERR_peek_error(void ); 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(const char **file,int *line);
unsigned long ERR_peek_error_line_data(const char **file,int *line, unsigned long ERR_peek_error_line_data(const char **file,int *line,
const char **data,int *flags); const char **data,int *flags);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册