summaryrefslogtreecommitdiff
path: root/main/openssl/crypto/dso/dso_lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/openssl/crypto/dso/dso_lib.c')
-rw-r--r--main/openssl/crypto/dso/dso_lib.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/main/openssl/crypto/dso/dso_lib.c b/main/openssl/crypto/dso/dso_lib.c
index 8a15b794..78015298 100644
--- a/main/openssl/crypto/dso/dso_lib.c
+++ b/main/openssl/crypto/dso/dso_lib.c
@@ -237,11 +237,19 @@ DSO *DSO_load(DSO *dso, const char *filename, DSO_METHOD *meth, int flags)
if(ret->meth->dso_load == NULL)
{
DSOerr(DSO_F_DSO_LOAD,DSO_R_UNSUPPORTED);
+ /* Make sure we unset the filename on failure, because we use
+ * this to determine when the DSO has been loaded above. */
+ OPENSSL_free(ret->filename);
+ ret->filename = NULL;
goto err;
}
if(!ret->meth->dso_load(ret))
{
DSOerr(DSO_F_DSO_LOAD,DSO_R_LOAD_FAILED);
+ /* Make sure we unset the filename on failure, because we use
+ * this to determine when the DSO has been loaded above. */
+ OPENSSL_free(ret->filename);
+ ret->filename = NULL;
goto err;
}
/* Load succeeded */