diff --git a/crypto/conf/conf_mod.c b/crypto/conf/conf_mod.c index 27c11c1a764b68cf5b296c37df92e09126700ed7..f1950ea16dcde656aaa0ecd92a6c18a69420bd7f 100644 --- a/crypto/conf/conf_mod.c +++ b/crypto/conf/conf_mod.c @@ -348,13 +348,20 @@ static int module_init(CONF_MODULE *pmod, char *name, char *value, CONF *cnf) } if (initialized_modules == NULL) + { initialized_modules = sk_CONF_IMODULE_new_null(); - - if (!initialized_modules) - goto err; + if (!initialized_modules) + { + CONFerr(CONF_F_MODULE_INIT, ERR_R_MALLOC_FAILURE); + goto err; + } + } if (!sk_CONF_IMODULE_push(initialized_modules, imod)) + { + CONFerr(CONF_F_MODULE_INIT, ERR_R_MALLOC_FAILURE); goto err; + } pmod->links++; @@ -362,8 +369,6 @@ static int module_init(CONF_MODULE *pmod, char *name, char *value, CONF *cnf) err: - CONFerr(CONF_F_MODULE_INIT, ERR_R_MALLOC_FAILURE); - /* We've started the module so we'd better finish it */ if (pmod->finish && init_called) pmod->finish(imod);