summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorRob Percival <robpercival@google.com>2016-08-05 14:17:31 +0100
committerRich Salz <rsalz@openssl.org>2016-08-15 12:56:47 -0400
commita1bb7708cec057fe07d987398015c01e6090891f (patch)
treef13433af758a9c80517a8c8bd3ffbb102d96d242 /crypto
parenta0ef6bb6874ea362ef78e0df1435212383df4774 (diff)
Improves CTLOG_STORE setters
Changes them to have clearer ownership semantics, as suggested in https://github.com/openssl/openssl/pull/1372#discussion_r73232196. Reviewed-by: Emilia Käsper <emilia@openssl.org> Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/1408)
Diffstat (limited to 'crypto')
-rw-r--r--crypto/ct/ct_policy.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/crypto/ct/ct_policy.c b/crypto/ct/ct_policy.c
index 4c4f9b3e3b..3c8411c0e4 100644
--- a/crypto/ct/ct_policy.c
+++ b/crypto/ct/ct_policy.c
@@ -30,21 +30,25 @@ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new(void)
void CT_POLICY_EVAL_CTX_free(CT_POLICY_EVAL_CTX *ctx)
{
+ X509_free(ctx->cert);
+ X509_free(ctx->issuer);
OPENSSL_free(ctx);
}
-void CT_POLICY_EVAL_CTX_set0_cert(CT_POLICY_EVAL_CTX *ctx, X509 *cert)
+void CT_POLICY_EVAL_CTX_set1_cert(CT_POLICY_EVAL_CTX *ctx, X509 *cert)
{
- ctx->cert = cert;
+ if (X509_up_ref(cert))
+ ctx->cert = cert;
}
-void CT_POLICY_EVAL_CTX_set0_issuer(CT_POLICY_EVAL_CTX *ctx, X509 *issuer)
+void CT_POLICY_EVAL_CTX_set1_issuer(CT_POLICY_EVAL_CTX *ctx, X509 *issuer)
{
- ctx->issuer = issuer;
+ if (X509_up_ref(issuer))
+ ctx->issuer = issuer;
}
-void CT_POLICY_EVAL_CTX_set0_log_store(CT_POLICY_EVAL_CTX *ctx,
- CTLOG_STORE *log_store)
+void CT_POLICY_EVAL_CTX_set_shared_CTLOG_STORE(CT_POLICY_EVAL_CTX *ctx,
+ CTLOG_STORE *log_store)
{
ctx->log_store = log_store;
}