|
@@ -480,18 +480,29 @@ int X509V3_set_issuer_pkey(X509V3_CTX *ctx, EVP_PKEY *pkey)
|
|
|
X509_EXTENSION *X509V3_EXT_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
|
|
|
const char *name, const char *value)
|
|
|
{
|
|
|
- CONF ctmp;
|
|
|
+ CONF *ctmp;
|
|
|
+ X509_EXTENSION *ret;
|
|
|
|
|
|
- CONF_set_nconf(&ctmp, conf);
|
|
|
- return X509V3_EXT_nconf(&ctmp, ctx, name, value);
|
|
|
+ if ((ctmp = NCONF_new(NULL)) == NULL)
|
|
|
+ return NULL;
|
|
|
+ CONF_set_nconf(ctmp, conf);
|
|
|
+ ret = X509V3_EXT_nconf(ctmp, ctx, name, value);
|
|
|
+ NCONF_free(ctmp);
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf,
|
|
|
X509V3_CTX *ctx, int ext_nid, const char *value)
|
|
|
{
|
|
|
- CONF ctmp;
|
|
|
- CONF_set_nconf(&ctmp, conf);
|
|
|
- return X509V3_EXT_nconf_nid(&ctmp, ctx, ext_nid, value);
|
|
|
+ CONF *ctmp;
|
|
|
+ X509_EXTENSION *ret;
|
|
|
+
|
|
|
+ if ((ctmp = NCONF_new(NULL)) == NULL)
|
|
|
+ return NULL;
|
|
|
+ CONF_set_nconf(ctmp, conf);
|
|
|
+ ret = X509V3_EXT_nconf_nid(ctmp, ctx, ext_nid, value);
|
|
|
+ NCONF_free(ctmp);
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
static char *conf_lhash_get_string(void *db, const char *section, const char *value)
|
|
@@ -524,10 +535,15 @@ void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH_OF(CONF_VALUE) *lhash)
|
|
|
int X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
|
|
|
const char *section, X509 *cert)
|
|
|
{
|
|
|
- CONF ctmp;
|
|
|
+ CONF *ctmp;
|
|
|
+ int ret;
|
|
|
|
|
|
- CONF_set_nconf(&ctmp, conf);
|
|
|
- return X509V3_EXT_add_nconf(&ctmp, ctx, section, cert);
|
|
|
+ if ((ctmp = NCONF_new(NULL)) == NULL)
|
|
|
+ return 0;
|
|
|
+ CONF_set_nconf(ctmp, conf);
|
|
|
+ ret = X509V3_EXT_add_nconf(ctmp, ctx, section, cert);
|
|
|
+ NCONF_free(ctmp);
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
/* Same as above but for a CRL */
|
|
@@ -535,10 +551,15 @@ int X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
|
|
|
int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
|
|
|
const char *section, X509_CRL *crl)
|
|
|
{
|
|
|
- CONF ctmp;
|
|
|
+ CONF *ctmp;
|
|
|
+ int ret;
|
|
|
|
|
|
- CONF_set_nconf(&ctmp, conf);
|
|
|
- return X509V3_EXT_CRL_add_nconf(&ctmp, ctx, section, crl);
|
|
|
+ if ((ctmp = NCONF_new(NULL)) == NULL)
|
|
|
+ return 0;
|
|
|
+ CONF_set_nconf(ctmp, conf);
|
|
|
+ ret = X509V3_EXT_CRL_add_nconf(ctmp, ctx, section, crl);
|
|
|
+ NCONF_free(ctmp);
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
/* Add extensions to certificate request */
|
|
@@ -546,8 +567,13 @@ int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
|
|
|
int X509V3_EXT_REQ_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
|
|
|
const char *section, X509_REQ *req)
|
|
|
{
|
|
|
- CONF ctmp;
|
|
|
+ CONF *ctmp;
|
|
|
+ int ret;
|
|
|
|
|
|
- CONF_set_nconf(&ctmp, conf);
|
|
|
- return X509V3_EXT_REQ_add_nconf(&ctmp, ctx, section, req);
|
|
|
+ if ((ctmp = NCONF_new(NULL)) == NULL)
|
|
|
+ return 0;
|
|
|
+ CONF_set_nconf(ctmp, conf);
|
|
|
+ ret = X509V3_EXT_REQ_add_nconf(ctmp, ctx, section, req);
|
|
|
+ NCONF_free(ctmp);
|
|
|
+ return ret;
|
|
|
}
|