diff options
author | Shane Lontis <shane.lontis@oracle.com> | 2021-04-28 17:22:50 +1000 |
---|---|---|
committer | Shane Lontis <shane.lontis@oracle.com> | 2021-04-30 16:04:53 +1000 |
commit | 857c223bf73f6d3ec91567cf341c5267392a3e66 (patch) | |
tree | 6c92ae78d493d09096d6567e2f562abf91813d11 | |
parent | e9d62da6c305d947530d91e412fdb21a8d8e3510 (diff) |
Fix memory leak in load_key_certs_crls() when using stdin.
A newly created BIO object within this function calls
OSSL_STORE_attach() which increases the ref count to 2.
OSSL_STORE_close() then decrements the ref count by 1, so the BIO still
remains.
The following new test was picking up this leak using..
> valgrind openssl crl -hash -noout < test/testcrl.pem
Not quite sure why the existing tests were not picking this up
since they appear to run through a similiar path.. such as
> valgrind openssl pkey < test-runs/test_rsa/rsa-pkcs8-ff.dd
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15058)
-rw-r--r-- | apps/lib/apps.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/apps/lib/apps.c b/apps/lib/apps.c index 1ca6f6e096..d715e25ff1 100644 --- a/apps/lib/apps.c +++ b/apps/lib/apps.c @@ -924,9 +924,11 @@ int load_key_certs_crls(const char *uri, int maybe_stdin, uri = "<stdin>"; unbuffer(stdin); bio = BIO_new_fp(stdin, 0); - if (bio != NULL) + if (bio != NULL) { ctx = OSSL_STORE_attach(bio, "file", libctx, propq, get_ui_method(), &uidata, NULL, NULL); + BIO_free(bio); + } } else { ctx = OSSL_STORE_open_ex(uri, libctx, propq, get_ui_method(), &uidata, NULL, NULL); |