提交 29e722f0 编写于 作者: D Dr. Stephen Henson

Fix memory leak in ENGINE autoconfig code. Improve error logging.

上级 05566760
...@@ -95,7 +95,7 @@ static int int_engine_configure(char *name, char *value, const CONF *cnf) ...@@ -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) ...@@ -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) ...@@ -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;
......
/* 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[]= ...@@ -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); ...@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册