summaryrefslogtreecommitdiffstats
path: root/crypto/conf
diff options
context:
space:
mode:
authorPavel Kopyl <p.kopyl@samsung.com>2017-11-03 18:18:59 +0300
committerRichard Levitte <levitte@openssl.org>2018-05-02 08:35:32 +0200
commitaebd0e5ca12d1ba0b229a4121a54afa5ea2d8aa1 (patch)
treeb9fca98d10a2a71395910ef190652f41e16701aa /crypto/conf
parentc4fa1f7fc016919a5b3d4ea2aa66c77e0cc40c9d (diff)
Fix memory leaks in CA related functions.
Reviewed-by: Rich Salz <rsalz@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org> (Merged from https://github.com/openssl/openssl/pull/4700)
Diffstat (limited to 'crypto/conf')
-rw-r--r--crypto/conf/conf_api.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/crypto/conf/conf_api.c b/crypto/conf/conf_api.c
index ade54839bb..9606b7f222 100644
--- a/crypto/conf/conf_api.c
+++ b/crypto/conf/conf_api.c
@@ -204,12 +204,14 @@ CONF_VALUE *_CONF_new_section(CONF *conf, const char *section)
v->value = (char *)sk;
vv = lh_CONF_VALUE_insert(conf->data, v);
- if (vv != NULL)
+ if (vv != NULL || lh_CONF_VALUE_error(conf->data) > 0)
goto err;
return v;
err:
sk_CONF_VALUE_free(sk);
+ if (v != NULL)
+ OPENSSL_free(v->section);
OPENSSL_free(v);
return NULL;
}