diff options
Diffstat (limited to 'crypto/conf/conf_lib.c')
-rw-r--r-- | crypto/conf/conf_lib.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/crypto/conf/conf_lib.c b/crypto/conf/conf_lib.c index 849b670e10..29357b26ad 100644 --- a/crypto/conf/conf_lib.c +++ b/crypto/conf/conf_lib.c @@ -57,6 +57,8 @@ */ #include <stdio.h> +#include <string.h> +#include <internal/conf.h> #include <openssl/crypto.h> #include <openssl/err.h> #include <openssl/conf.h> @@ -370,3 +372,29 @@ int NCONF_dump_bio(const CONF *conf, BIO *out) return conf->meth->dump(conf, out); } + +/* + * These routines call the C malloc/free, to avoid intermixing with + * OpenSSL function pointers before the library is initialized. + */ +OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void) +{ + OPENSSL_INIT_SETTINGS *ret = malloc(sizeof(*ret)); + + memset(ret, 0, sizeof(*ret)); + return ret; +} + + +void OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings, + const char *config_file) +{ + free(settings->config_name); + settings->config_name = config_file == NULL ? NULL : strdup(config_file); +} + +void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings) +{ + free(settings->config_name); + free(settings); +} |