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

In {RSA,DSA,DH}_new_method(x) need to increase the reference

count of the ENGINE is x is not NULL since it will be freed
in {RSA,DSA,DH}_free().
parent f13def50
Loading
Loading
Loading
Loading
+13 −8
Original line number Diff line number Diff line
@@ -142,17 +142,22 @@ DH *DH_new_method(ENGINE *engine)
		DHerr(DH_F_DH_NEW,ERR_R_MALLOC_FAILURE);
		return(NULL);
		}

	if (engine)
		{
		if(ENGINE_init(engine))
			ret->engine = engine;
		else 
		{
		if((ret->engine=ENGINE_get_default_DH()) == NULL)
			ret->engine = NULL;
		}
	else
		ret->engine=ENGINE_get_default_DH();
	if(ret->engine == NULL)
		{
		DHerr(DH_F_DH_NEW,ERR_LIB_ENGINE);
		OPENSSL_free(ret);
		return NULL;
		}
		}
	meth = ENGINE_get_DH(ret->engine);
	ret->pad=0;
	ret->version=0;
+15 −8
Original line number Diff line number Diff line
@@ -146,17 +146,24 @@ DSA *DSA_new_method(ENGINE *engine)
		DSAerr(DSA_F_DSA_NEW,ERR_R_MALLOC_FAILURE);
		return(NULL);
		}

	if (engine)
		{
		if(ENGINE_init(engine))
			ret->engine = engine;
		else 
		{
		if((ret->engine=ENGINE_get_default_DSA()) == NULL)
			ret->engine = NULL;
		}
	else
		ret->engine=ENGINE_get_default_DSA();

	if(ret->engine == NULL)
		{
		DSAerr(DSA_F_DSA_NEW,ERR_LIB_ENGINE);
		OPENSSL_free(ret);
		return NULL;
		}
		}

	meth = ENGINE_get_DSA(ret->engine);
	ret->pad=0;
	ret->version=0;
+14 −8
Original line number Diff line number Diff line
@@ -162,17 +162,23 @@ RSA *RSA_new_method(ENGINE *engine)
		return(NULL);
		}

	if (engine == NULL)
	if (engine)
		{
		if((ret->engine=ENGINE_get_default_RSA()) == NULL)
		if(ENGINE_init(engine))
			ret->engine = engine;
		else 
			ret->engine = NULL;
		}
	else
		ret->engine=ENGINE_get_default_RSA();

	if(ret->engine == NULL)
		{
		RSAerr(RSA_F_RSA_NEW_METHOD,ERR_LIB_ENGINE);
		OPENSSL_free(ret);
		return NULL;
		}
		}
	else
		ret->engine=engine;

	meth = ENGINE_get_RSA(ret->engine);

	ret->pad=0;