summaryrefslogtreecommitdiffstats
path: root/crypto/conf/conf_lib.c
diff options
context:
space:
mode:
authorRich Salz <rsalz@akamai.com>2016-02-10 09:55:48 -0500
committerRich Salz <rsalz@openssl.org>2016-02-11 08:43:46 -0500
commit7253fd550c768979ecd3df8f4dbbedd6e9dd76b0 (patch)
tree6adaf42e67e464dbb90a55514279a35637476f08 /crypto/conf/conf_lib.c
parent5caef3b5028599958bfddbdb86ea4f47df9f315b (diff)
Hide OPENSSL_INIT_SETTINGS.
Make OPENSSL_INIT_SETTINGS an opaque structure. Reviewed-by: Richard Levitte <levitte@openssl.org>
Diffstat (limited to 'crypto/conf/conf_lib.c')
-rw-r--r--crypto/conf/conf_lib.c28
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);
+}