From 8a1650b26fee8cb76ca52bacef3020bbfe6a5426 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Helleu?= Date: Sat, 23 Apr 2016 14:33:04 +0200 Subject: [PATCH] lua: fix crash when a lua function doesn't return a value and a string was expected (closes #718) --- ChangeLog.asciidoc | 2 ++ src/plugins/lua/weechat-lua.c | 14 +++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/ChangeLog.asciidoc b/ChangeLog.asciidoc index a352e807a..ba8920e0d 100644 --- a/ChangeLog.asciidoc +++ b/ChangeLog.asciidoc @@ -37,6 +37,8 @@ https://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes] * irc: add option irc.network.sasl_fail_unavailable (issue #600, issue #697) * irc: add multiple targets and support of "-server" in command /ctcp (issue #204, issue #493) +* lua: fix crash when a lua function doesn't return a value and a string was + expected (issue #718) * ruby: add detection of Ruby 2.3 (issue #698) * trigger: add "recover" in default triggers cmd_pass/msg_auth, and "regain" in default trigger "msg_auth" (issue #511) diff --git a/src/plugins/lua/weechat-lua.c b/src/plugins/lua/weechat-lua.c index 321d69c83..fbb08cad1 100644 --- a/src/plugins/lua/weechat-lua.c +++ b/src/plugins/lua/weechat-lua.c @@ -204,7 +204,19 @@ weechat_lua_exec (struct t_plugin_script *script, int ret_type, { if (ret_type == WEECHAT_SCRIPT_EXEC_STRING) { - ret_value = strdup ((char *) lua_tostring (lua_current_interpreter, -1)); + ret_value = (char *) lua_tostring (lua_current_interpreter, -1); + if (ret_value) + { + ret_value = strdup (ret_value); + } + else + { + weechat_printf (NULL, + weechat_gettext ("%s%s: function \"%s\" must " + "return a valid value"), + weechat_prefix ("error"), LUA_PLUGIN_NAME, + function); + } } else if (ret_type == WEECHAT_SCRIPT_EXEC_INT) {