diff options
Diffstat (limited to 'main/openssl/crypto/dso')
-rw-r--r-- | main/openssl/crypto/dso/dso_dlfcn.c | 3 | ||||
-rw-r--r-- | main/openssl/crypto/dso/dso_lib.c | 8 |
2 files changed, 10 insertions, 1 deletions
diff --git a/main/openssl/crypto/dso/dso_dlfcn.c b/main/openssl/crypto/dso/dso_dlfcn.c index c2bc6176..5f225480 100644 --- a/main/openssl/crypto/dso/dso_dlfcn.c +++ b/main/openssl/crypto/dso/dso_dlfcn.c @@ -86,7 +86,8 @@ DSO_METHOD *DSO_METHOD_dlfcn(void) # if defined(_AIX) || defined(__CYGWIN__) || \ defined(__SCO_VERSION__) || defined(_SCO_ELF) || \ (defined(__osf__) && !defined(RTLD_NEXT)) || \ - (defined(__OpenBSD__) && !defined(RTLD_SELF)) + (defined(__OpenBSD__) && !defined(RTLD_SELF)) || \ + defined(__ANDROID__) # undef HAVE_DLINFO # endif #endif 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 */ |