From: Anthony Minessale Date: Mon, 22 Sep 2014 22:56:59 +0000 (+0500) Subject: fix leak in lua when script does not execute properly in xml_binding handler X-Git-Tag: v1.4.9~4^2~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1bb0b8e16d114f943e02101230bf8b6517b9c1f4;p=thirdparty%2Ffreeswitch.git fix leak in lua when script does not execute properly in xml_binding handler --- diff --git a/src/mod/languages/mod_lua/mod_lua.cpp b/src/mod/languages/mod_lua/mod_lua.cpp index 95e6adbc9f..be68a43eb4 100644 --- a/src/mod/languages/mod_lua/mod_lua.cpp +++ b/src/mod/languages/mod_lua/mod_lua.cpp @@ -236,13 +236,14 @@ static switch_xml_t lua_fetch(const char *section, { switch_xml_t xml = NULL; + char *mycmd = NULL; if (!zstr(globals.xml_handler)) { lua_State *L = lua_init(); - char *mycmd = strdup(globals.xml_handler); const char *str; int error; + mycmd = strdup(globals.xml_handler); switch_assert(mycmd); lua_newtable(L); @@ -267,7 +268,7 @@ static switch_xml_t lua_fetch(const char *section, if((error = lua_parse_and_execute(L, mycmd))){ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "LUA script parse/execute error!\n"); - return NULL; + goto end; } lua_getglobal(L, "XML_STRING"); @@ -285,9 +286,13 @@ static switch_xml_t lua_fetch(const char *section, } lua_uninit(L); - free(mycmd); + } + end: + + switch_safe_free(mycmd); + return xml; }