summaryrefslogtreecommitdiffstats
path: root/apps/req.c
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2016-09-28 23:39:18 +0200
committerRichard Levitte <richard@levitte.org>2016-10-20 08:59:53 +0200
commit233bcb95dd7299d98ad235d6ba16c1b5726c9276 (patch)
tree5d80dd7ea98c25c124516eb43e5428256dd6804c /apps/req.c
parente7a5f50da09324aeb77386f30cd1110eb5e917f2 (diff)
If an engine comes up explicitely, it must also come down explicitely
In apps/apps.c, one can set up an engine with setup_engine(). However, we freed the structural reference immediately, which means that for engines that don't already have a structural reference somewhere else (because it's a built in engine), we end up returning an invalid reference. Instead, the function release_engine() is added, and called at the end of the routines that call setup_engine(). Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/1643) (cherry picked from commit dd1abd4462e4e4fa84b8f8de2ec70375f9b0e191)
Diffstat (limited to 'apps/req.c')
-rw-r--r--apps/req.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/apps/req.c b/apps/req.c
index 8ebe1eca6d..2707dc9e36 100644
--- a/apps/req.c
+++ b/apps/req.c
@@ -820,6 +820,7 @@ int req_main(int argc, char **argv)
X509_REQ_free(req);
X509_free(x509ss);
ASN1_INTEGER_free(serial);
+ release_engine(e);
if (passin != nofree_passin)
OPENSSL_free(passin);
if (passout != nofree_passout)