| Index: openssl/patches/eng_dyn_dirs.patch
|
| diff --git a/openssl/patches/eng_dyn_dirs.patch b/openssl/patches/eng_dyn_dirs.patch
|
| deleted file mode 100644
|
| index ad137e580fbcea14429c19dffa0711b9ab0480fd..0000000000000000000000000000000000000000
|
| --- a/openssl/patches/eng_dyn_dirs.patch
|
| +++ /dev/null
|
| @@ -1,72 +0,0 @@
|
| -From b53cd994adaff887ec126de259e37d769ad585cb Mon Sep 17 00:00:00 2001
|
| -From: Kenny Root <kroot@google.com>
|
| -Date: Fri, 8 Feb 2013 11:22:25 -0800
|
| -Subject: [PATCH] Fix failures when eng_dyn scans multiple directories
|
| -
|
| -If DIR_ADD is called with multiple directories, and the target file
|
| -does not exist in the first directory scanned, the DSO object will still
|
| -be considered "loaded" for the next call of DSO_load(...) and cause
|
| -subsequent calls to DSO_load(...) fail with the reason code of "already
|
| -loaded" even though the load failed.
|
| -
|
| -Additionally, with multiple directories used in eng_dyn, another problem
|
| -manifests because the errors pushed onto the error stack will linger even
|
| -if another library is loaded successfully on subsequent calls to
|
| -DSO_load(...) in the directory scanning loop.
|
| -
|
| -Change-Id: I4ddd24f7b39bd88663e1783f30914870a907acfa
|
| ----
|
| - crypto/dso/dso_lib.c | 8 ++++++++
|
| - crypto/engine/eng_dyn.c | 5 ++++-
|
| - 2 files changed, 12 insertions(+), 1 deletion(-)
|
| -
|
| -diff --git a/crypto/dso/dso_lib.c b/crypto/dso/dso_lib.c
|
| -index 8a15b79..7801529 100644
|
| ---- a/crypto/dso/dso_lib.c
|
| -+++ b/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 */
|
| -diff --git a/crypto/engine/eng_dyn.c b/crypto/engine/eng_dyn.c
|
| -index 807da7a..8fb8634 100644
|
| ---- a/crypto/engine/eng_dyn.c
|
| -+++ b/crypto/engine/eng_dyn.c
|
| -@@ -408,7 +408,7 @@ static int int_load(dynamic_data_ctx *ctx)
|
| - int num, loop;
|
| - /* Unless told not to, try a direct load */
|
| - if((ctx->dir_load != 2) && (DSO_load(ctx->dynamic_dso,
|
| -- ctx->DYNAMIC_LIBNAME, NULL, 0)) != NULL)
|
| -+ ctx->DYNAMIC_LIBNAME, NULL, 0) != NULL))
|
| - return 1;
|
| - /* If we're not allowed to use 'dirs' or we have none, fail */
|
| - if(!ctx->dir_load || (num = sk_OPENSSL_STRING_num(ctx->dirs)) < 1)
|
| -@@ -423,6 +423,9 @@ static int int_load(dynamic_data_ctx *ctx)
|
| - {
|
| - /* Found what we're looking for */
|
| - OPENSSL_free(merge);
|
| -+ /* Previous failed loop iterations, if any, will have resulted in
|
| -+ * errors. Clear them out before returning success. */
|
| -+ ERR_clear_error();
|
| - return 1;
|
| - }
|
| - OPENSSL_free(merge);
|
| ---
|
| -1.7.12.3-x20-1
|
| -
|
|
|