avoid infinite recursion if dynamic engine isn't loaded

Submitted by: Jonathon Green <jonathon_au@yahoo.com>
This commit is contained in:
Nils Larsch
2005-08-06 10:34:35 +00:00
parent 222f224664
commit d7e35e0371

View File

@@ -394,6 +394,9 @@ ENGINE *ENGINE_by_id(const char *id)
#else
/* EEK! Experimental code starts */
if(iterator) return iterator;
/* Prevent infinite recusrion if we're looking for the dynamic engine. */
if (strcmp(id, "dynamic"))
{
#ifdef OPENSSL_SYS_VMS
if((load_dir = getenv("OPENSSL_ENGINES")) == 0) load_dir = "SSLROOT:[ENGINES]";
#else
@@ -407,6 +410,7 @@ ENGINE *ENGINE_by_id(const char *id)
!ENGINE_ctrl_cmd_string(iterator, "LOAD", NULL, 0))
goto notfound;
return iterator;
}
notfound:
ENGINEerr(ENGINE_F_ENGINE_BY_ID,ENGINE_R_NO_SUCH_ENGINE);
ERR_add_error_data(2, "id=", id);