提交 1bb0b8e1 authored 作者: Anthony Minessale's avatar Anthony Minessale

fix leak in lua when script does not execute properly in xml_binding handler

上级 4dc7f92a
...@@ -236,13 +236,14 @@ static switch_xml_t lua_fetch(const char *section, ...@@ -236,13 +236,14 @@ static switch_xml_t lua_fetch(const char *section,
{ {
switch_xml_t xml = NULL; switch_xml_t xml = NULL;
char *mycmd = NULL;
if (!zstr(globals.xml_handler)) { if (!zstr(globals.xml_handler)) {
lua_State *L = lua_init(); lua_State *L = lua_init();
char *mycmd = strdup(globals.xml_handler);
const char *str; const char *str;
int error; int error;
mycmd = strdup(globals.xml_handler);
switch_assert(mycmd); switch_assert(mycmd);
lua_newtable(L); lua_newtable(L);
...@@ -267,7 +268,7 @@ static switch_xml_t lua_fetch(const char *section, ...@@ -267,7 +268,7 @@ static switch_xml_t lua_fetch(const char *section,
if((error = lua_parse_and_execute(L, mycmd))){ if((error = lua_parse_and_execute(L, mycmd))){
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "LUA script parse/execute error!\n"); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "LUA script parse/execute error!\n");
return NULL; goto end;
} }
lua_getglobal(L, "XML_STRING"); lua_getglobal(L, "XML_STRING");
...@@ -285,9 +286,13 @@ static switch_xml_t lua_fetch(const char *section, ...@@ -285,9 +286,13 @@ static switch_xml_t lua_fetch(const char *section,
} }
lua_uninit(L); lua_uninit(L);
free(mycmd);
} }
end:
switch_safe_free(mycmd);
return xml; return xml;
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论