Commit deb4d50e authored by Geoff Thorpe's avatar Geoff Thorpe
Browse files

Previously, the default RSA_METHOD was NULL until the first RSA structure was

initialised, at which point an appropriate default was chosen. This meant a
call to RSA_get_default_method might have returned FALSE.

This change fixes that; now any called to RSA_new(), RSA_new_method(NULL), or
RSA_get_default_method() will ensure that a default is chosen if it wasn't
already.
parent ffb48878
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -4,6 +4,13 @@

 Changes between 0.9.5a and 0.9.6  [xx XXX 2000]

  *) RSA_get_default_method() will now cause a default
     RSA_METHOD to be chosen if one doesn't exist already.
     Previously this was only set during a call to RSA_new()
     or RSA_new_method(NULL) meaning it was possible for
     RSA_get_default_method() to return NULL.
     [Geoff Thorpe]

  *) Added native name translation to the existing DSO code
     that will convert (if the flag to do so is set) filenames
     that are sufficiently small and have no path information
+14 −13
Original line number Diff line number Diff line
@@ -81,6 +81,19 @@ void RSA_set_default_method(RSA_METHOD *meth)

RSA_METHOD *RSA_get_default_method(void)
{
	if (default_RSA_meth == NULL)
		{
#ifdef RSA_NULL
		default_RSA_meth=RSA_null_method();
#else
#ifdef RSAref
		default_RSA_meth=RSA_PKCS1_RSAref();
#else
		default_RSA_meth=RSA_PKCS1_SSLeay();
#endif
#endif
		}

	return default_RSA_meth;
}

@@ -103,18 +116,6 @@ RSA *RSA_new_method(RSA_METHOD *meth)
	{
	RSA *ret;

	if (default_RSA_meth == NULL)
		{
#ifdef RSA_NULL
		default_RSA_meth=RSA_null_method();
#else
#ifdef RSAref
		default_RSA_meth=RSA_PKCS1_RSAref();
#else
		default_RSA_meth=RSA_PKCS1_SSLeay();
#endif
#endif
		}
	ret=(RSA *)Malloc(sizeof(RSA));
	if (ret == NULL)
		{
@@ -123,7 +124,7 @@ RSA *RSA_new_method(RSA_METHOD *meth)
		}

	if (meth == NULL)
		ret->meth=default_RSA_meth;
		ret->meth=RSA_get_default_method();
	else
		ret->meth=meth;