Fix memory leak in ENGINE autoconfig code. Improve error logging.
This commit is contained in:
parent
05566760da
commit
29e722f031
@ -95,7 +95,7 @@ static int int_engine_configure(char *name, char *value, const CONF *cnf)
|
|||||||
int ret = 0;
|
int ret = 0;
|
||||||
long do_init = -1;
|
long do_init = -1;
|
||||||
STACK_OF(CONF_VALUE) *ecmds;
|
STACK_OF(CONF_VALUE) *ecmds;
|
||||||
CONF_VALUE *ecmd;
|
CONF_VALUE *ecmd = NULL;
|
||||||
char *ctrlname, *ctrlvalue;
|
char *ctrlname, *ctrlvalue;
|
||||||
ENGINE *e = NULL;
|
ENGINE *e = NULL;
|
||||||
int soft = 0;
|
int soft = 0;
|
||||||
@ -157,7 +157,7 @@ static int int_engine_configure(char *name, char *value, const CONF *cnf)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (!e)
|
if (!e)
|
||||||
return 0;
|
goto err;
|
||||||
}
|
}
|
||||||
/* Allow "EMPTY" to mean no value: this allows a valid
|
/* Allow "EMPTY" to mean no value: this allows a valid
|
||||||
* "value" to be passed to ctrls of type NO_INPUT
|
* "value" to be passed to ctrls of type NO_INPUT
|
||||||
@ -186,16 +186,27 @@ static int int_engine_configure(char *name, char *value, const CONF *cnf)
|
|||||||
}
|
}
|
||||||
else if (!ENGINE_ctrl_cmd_string(e,
|
else if (!ENGINE_ctrl_cmd_string(e,
|
||||||
ctrlname, ctrlvalue, 0))
|
ctrlname, ctrlvalue, 0))
|
||||||
return 0;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
if (e && (do_init == -1) && !int_engine_init(e))
|
if (e && (do_init == -1) && !int_engine_init(e))
|
||||||
|
{
|
||||||
|
ecmd = NULL;
|
||||||
goto err;
|
goto err;
|
||||||
|
}
|
||||||
ret = 1;
|
ret = 1;
|
||||||
err:
|
err:
|
||||||
|
if (ret != 1)
|
||||||
|
{
|
||||||
|
ENGINEerr(ENGINE_F_INT_ENGINE_CONFIGURE, ENGINE_R_ENGINE_CONFIGURATION_ERROR);
|
||||||
|
if (ecmd)
|
||||||
|
ERR_add_error_data(6, "section=", ecmd->section,
|
||||||
|
", name=", ecmd->name,
|
||||||
|
", value=", ecmd->value);
|
||||||
|
}
|
||||||
if (e)
|
if (e)
|
||||||
ENGINE_free(e);
|
ENGINE_free(e);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* crypto/engine/eng_err.c */
|
/* crypto/engine/eng_err.c */
|
||||||
/* ====================================================================
|
/* ====================================================================
|
||||||
* Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved.
|
* Copyright (c) 1999-2010 The OpenSSL Project. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
@ -126,6 +126,7 @@ static ERR_STRING_DATA ENGINE_str_reasons[]=
|
|||||||
{ERR_REASON(ENGINE_R_DSO_FAILURE) ,"DSO failure"},
|
{ERR_REASON(ENGINE_R_DSO_FAILURE) ,"DSO failure"},
|
||||||
{ERR_REASON(ENGINE_R_DSO_NOT_FOUND) ,"dso not found"},
|
{ERR_REASON(ENGINE_R_DSO_NOT_FOUND) ,"dso not found"},
|
||||||
{ERR_REASON(ENGINE_R_ENGINES_SECTION_ERROR),"engines section error"},
|
{ERR_REASON(ENGINE_R_ENGINES_SECTION_ERROR),"engines section error"},
|
||||||
|
{ERR_REASON(ENGINE_R_ENGINE_CONFIGURATION_ERROR),"engine configuration error"},
|
||||||
{ERR_REASON(ENGINE_R_ENGINE_IS_NOT_IN_LIST),"engine is not in the list"},
|
{ERR_REASON(ENGINE_R_ENGINE_IS_NOT_IN_LIST),"engine is not in the list"},
|
||||||
{ERR_REASON(ENGINE_R_ENGINE_SECTION_ERROR),"engine section error"},
|
{ERR_REASON(ENGINE_R_ENGINE_SECTION_ERROR),"engine section error"},
|
||||||
{ERR_REASON(ENGINE_R_FAILED_LOADING_PRIVATE_KEY),"failed loading private key"},
|
{ERR_REASON(ENGINE_R_FAILED_LOADING_PRIVATE_KEY),"failed loading private key"},
|
||||||
|
@ -795,6 +795,7 @@ void ERR_load_ENGINE_strings(void);
|
|||||||
#define ENGINE_R_DSO_FAILURE 104
|
#define ENGINE_R_DSO_FAILURE 104
|
||||||
#define ENGINE_R_DSO_NOT_FOUND 132
|
#define ENGINE_R_DSO_NOT_FOUND 132
|
||||||
#define ENGINE_R_ENGINES_SECTION_ERROR 148
|
#define ENGINE_R_ENGINES_SECTION_ERROR 148
|
||||||
|
#define ENGINE_R_ENGINE_CONFIGURATION_ERROR 102
|
||||||
#define ENGINE_R_ENGINE_IS_NOT_IN_LIST 105
|
#define ENGINE_R_ENGINE_IS_NOT_IN_LIST 105
|
||||||
#define ENGINE_R_ENGINE_SECTION_ERROR 149
|
#define ENGINE_R_ENGINE_SECTION_ERROR 149
|
||||||
#define ENGINE_R_FAILED_LOADING_PRIVATE_KEY 128
|
#define ENGINE_R_FAILED_LOADING_PRIVATE_KEY 128
|
||||||
|
Loading…
Reference in New Issue
Block a user