Commit 92714455 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

In engine_table_select() don't clear out entire error queue: just clear

out any we added using ERR_set_mark() and ERR_pop_to_mark() otherwise
errors from other sources (e.g. SSL library) can be wiped.
parent 00b52578
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -254,6 +254,7 @@ ENGINE *engine_table_select_tmp(ENGINE_TABLE **table, int nid, const char *f, in
#endif
		return NULL;
		}
	ERR_set_mark();
	CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);
	/* Check again inside the lock otherwise we could race against cleanup
	 * operations. But don't worry about a fprintf(stderr). */
@@ -327,7 +328,7 @@ end:
	CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
	/* Whatever happened, any failed init()s are not failures in this
	 * context, so clear our error state. */
	ERR_clear_error();
	ERR_pop_to_mark();
	return ret;
	}