Fix two possible leaks
authorFdaSilvaYY <fdasilvayy@gmail.com>
Fri, 29 Jan 2016 18:53:28 +0000 (19:53 +0100)
committerRich Salz <rsalz@openssl.org>
Sat, 27 Feb 2016 22:05:32 +0000 (17:05 -0500)
Backport of 98637bd

Reviewed-by: Kurt Roeckx <kurt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
crypto/dso/dso_lib.c
crypto/engine/eng_dyn.c

index 3312450eae67d80ba31482fd385fd48e7eaa83a7..2beb7c1ba5424657a501f93a7247cd11d74e28d5 100644 (file)
@@ -122,6 +122,7 @@ DSO *DSO_new_method(DSO_METHOD *meth)
         ret->meth = meth;
     ret->references = 1;
     if ((ret->meth->init != NULL) && !ret->meth->init(ret)) {
+        sk_void_free(ret->meth_data);
         OPENSSL_free(ret);
         ret = NULL;
     }
index 3169b09ad865111694c33f0c4d963ddff65196de..40f30e9d585e212ea243d59b15ece1bc61916098 100644 (file)
@@ -243,8 +243,10 @@ static int dynamic_set_data_ctx(ENGINE *e, dynamic_data_ctx **ctx)
      * If we lost the race to set the context, c is non-NULL and *ctx is the
      * context of the thread that won.
      */
-    if (c)
+    if (c) {
+        sk_OPENSSL_STRING_free(c->dirs);
         OPENSSL_free(c);
+    }
     return 1;
 }