Config file updates from stable branch
This commit is contained in:
parent
b3dfaaa143
commit
92f91ff48b
9
CHANGES
9
CHANGES
@ -43,6 +43,15 @@
|
|||||||
*) applies to 0.9.6a ... 0.9.6d and 0.9.7
|
*) applies to 0.9.6a ... 0.9.6d and 0.9.7
|
||||||
+) applies to 0.9.7 only
|
+) applies to 0.9.7 only
|
||||||
|
|
||||||
|
+) Move default behaviour to CONF_modules_load_file(). Is appname is NULL
|
||||||
|
use "openssl_conf" if filename is NULL use default openssl config file.
|
||||||
|
[Steve Henson]
|
||||||
|
|
||||||
|
+) Add an argument to OPENSSL_config() to allow the use of an alternative
|
||||||
|
config section name. Add a new flag to tolerate a missing config file
|
||||||
|
and move code to CONF_modules_load_file().
|
||||||
|
[Steve Henson]
|
||||||
|
|
||||||
*) Add information about CygWin 1.3 and on, and preserve proper
|
*) Add information about CygWin 1.3 and on, and preserve proper
|
||||||
configuration for the versions before that.
|
configuration for the versions before that.
|
||||||
[Corinna Vinschen <vinschen@redhat.com> and Richard Levitte]
|
[Corinna Vinschen <vinschen@redhat.com> and Richard Levitte]
|
||||||
|
@ -112,6 +112,7 @@ typedef void conf_finish_func(CONF_IMODULE *md);
|
|||||||
#define CONF_MFLAGS_IGNORE_RETURN_CODES 0x2
|
#define CONF_MFLAGS_IGNORE_RETURN_CODES 0x2
|
||||||
#define CONF_MFLAGS_SILENT 0x4
|
#define CONF_MFLAGS_SILENT 0x4
|
||||||
#define CONF_MFLAGS_NO_DSO 0x8
|
#define CONF_MFLAGS_NO_DSO 0x8
|
||||||
|
#define CONF_MFLAGS_IGNORE_MISSING_FILE 0x10
|
||||||
|
|
||||||
int CONF_set_default_method(CONF_METHOD *meth);
|
int CONF_set_default_method(CONF_METHOD *meth);
|
||||||
void CONF_set_nconf(CONF *conf,LHASH *hash);
|
void CONF_set_nconf(CONF *conf,LHASH *hash);
|
||||||
@ -127,7 +128,7 @@ void CONF_free(LHASH *conf);
|
|||||||
int CONF_dump_fp(LHASH *conf, FILE *out);
|
int CONF_dump_fp(LHASH *conf, FILE *out);
|
||||||
int CONF_dump_bio(LHASH *conf, BIO *out);
|
int CONF_dump_bio(LHASH *conf, BIO *out);
|
||||||
|
|
||||||
void OPENSSL_config(void);
|
void OPENSSL_config(const char *config_name);
|
||||||
|
|
||||||
/* New conf code. The semantics are different from the functions above.
|
/* New conf code. The semantics are different from the functions above.
|
||||||
If that wasn't the case, the above functions would have been replaced */
|
If that wasn't the case, the above functions would have been replaced */
|
||||||
|
@ -81,30 +81,16 @@ void OPENSSL_load_builtin_modules(void)
|
|||||||
|
|
||||||
static int openssl_configured = 0;
|
static int openssl_configured = 0;
|
||||||
|
|
||||||
void OPENSSL_config(void)
|
void OPENSSL_config(const char *config_name)
|
||||||
{
|
{
|
||||||
int err_exit = 0;
|
|
||||||
char *file;
|
|
||||||
if (openssl_configured)
|
if (openssl_configured)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
OPENSSL_load_builtin_modules();
|
OPENSSL_load_builtin_modules();
|
||||||
|
|
||||||
file = CONF_get1_default_config_file();
|
|
||||||
if (!file)
|
|
||||||
return;
|
|
||||||
|
|
||||||
ERR_clear_error();
|
ERR_clear_error();
|
||||||
if (CONF_modules_load_file(file, "openssl_config", 0) <= 0)
|
if (CONF_modules_load_file(NULL, NULL,
|
||||||
{
|
CONF_MFLAGS_IGNORE_MISSING_FILE) <= 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 (err_exit)
|
|
||||||
{
|
{
|
||||||
BIO *bio_err;
|
BIO *bio_err;
|
||||||
ERR_load_crypto_strings();
|
ERR_load_crypto_strings();
|
||||||
@ -113,6 +99,7 @@ void OPENSSL_config(void)
|
|||||||
BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
|
BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
|
||||||
BIO_printf(bio_err,"Auto configuration failed\n");
|
BIO_printf(bio_err,"Auto configuration failed\n");
|
||||||
ERR_print_errors(bio_err);
|
ERR_print_errors(bio_err);
|
||||||
|
BIO_free(bio_err);
|
||||||
}
|
}
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
@ -163,18 +163,40 @@ int CONF_modules_load(const CONF *cnf, const char *appname,
|
|||||||
int CONF_modules_load_file(const char *filename, const char *appname,
|
int CONF_modules_load_file(const char *filename, const char *appname,
|
||||||
unsigned long flags)
|
unsigned long flags)
|
||||||
{
|
{
|
||||||
|
char *file;
|
||||||
CONF *conf = NULL;
|
CONF *conf = NULL;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
conf = NCONF_new(NULL);
|
conf = NCONF_new(NULL);
|
||||||
if (!conf)
|
if (!conf)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
if (NCONF_load(conf, filename, NULL) <= 0)
|
if (filename == NULL)
|
||||||
|
{
|
||||||
|
file = CONF_get1_default_config_file();
|
||||||
|
if (!file)
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
file = (char *)filename;
|
||||||
|
if (appname == NULL)
|
||||||
|
appname = "openssl_conf";
|
||||||
|
|
||||||
|
if (NCONF_load(conf, file, NULL) <= 0)
|
||||||
|
{
|
||||||
|
if ((flags & CONF_MFLAGS_IGNORE_MISSING_FILE) &&
|
||||||
|
(ERR_GET_REASON(ERR_peek_last_error()) == CONF_R_NO_SUCH_FILE))
|
||||||
|
{
|
||||||
|
ERR_clear_error();
|
||||||
|
ret = 1;
|
||||||
|
}
|
||||||
goto err;
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
ret = CONF_modules_load(conf, appname, flags);
|
ret = CONF_modules_load(conf, appname, flags);
|
||||||
|
|
||||||
err:
|
err:
|
||||||
|
if (filename == NULL)
|
||||||
|
OPENSSL_free(file);
|
||||||
NCONF_free(conf);
|
NCONF_free(conf);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -189,7 +211,7 @@ static int module_run(const CONF *cnf, char *name, char *value,
|
|||||||
md = module_find(name);
|
md = module_find(name);
|
||||||
|
|
||||||
/* Module not found: try to load DSO */
|
/* Module not found: try to load DSO */
|
||||||
if (!md)
|
if (!md && !(flags & CONF_MFLAGS_NO_DSO))
|
||||||
md = module_load_dso(cnf, name, value, flags);
|
md = module_load_dso(cnf, name, value, flags);
|
||||||
|
|
||||||
if (!md)
|
if (!md)
|
||||||
@ -248,11 +270,6 @@ static CONF_MODULE *module_load_dso(const CONF *cnf, char *name, char *value,
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
ffunc = (conf_finish_func *)DSO_bind_func(dso, DSO_mod_finish_name);
|
ffunc = (conf_finish_func *)DSO_bind_func(dso, DSO_mod_finish_name);
|
||||||
if (!ffunc)
|
|
||||||
{
|
|
||||||
errcode = CONF_R_MISSING_FINISH_FUNCTION;
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
/* All OK, add module */
|
/* All OK, add module */
|
||||||
md = module_add(dso, name, ifunc, ffunc);
|
md = module_add(dso, name, ifunc, ffunc);
|
||||||
|
|
||||||
@ -450,7 +467,8 @@ void CONF_modules_finish(void)
|
|||||||
|
|
||||||
static void module_finish(CONF_IMODULE *imod)
|
static void module_finish(CONF_IMODULE *imod)
|
||||||
{
|
{
|
||||||
imod->pmod->finish(imod);
|
if (imod->pmod->finish)
|
||||||
|
imod->pmod->finish(imod);
|
||||||
imod->pmod->links--;
|
imod->pmod->links--;
|
||||||
OPENSSL_free(imod->name);
|
OPENSSL_free(imod->name);
|
||||||
OPENSSL_free(imod->value);
|
OPENSSL_free(imod->value);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user