From ef252b2314474ff29a58674abc3d564ec36162e4 Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 24 Oct 2014 21:56:45 +0200 Subject: lua: lua_tostring() on an error value can return NULL Lua is so clever it allows values that can't be converted to strings, in which case lua_tostring() returns NULL. Trigger undefined behavior. --- player/lua.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'player') diff --git a/player/lua.c b/player/lua.c index 791a7d4fea..80d40e1b6a 100644 --- a/player/lua.c +++ b/player/lua.c @@ -346,8 +346,10 @@ static int run_lua(lua_State *L) // run this under an error handler that can do backtraces lua_pushcfunction(L, error_handler); // errf lua_pushcfunction(L, load_scripts); // errf fn - if (lua_pcall(L, 0, 0, -2)) // errf [error] - MP_FATAL(ctx, "Lua error: %s\n", lua_tostring(L, -1)); + if (lua_pcall(L, 0, 0, -2)) { // errf [error] + const char *e = lua_tostring(L, -1); + MP_FATAL(ctx, "Lua error: %s\n", e ? e : "(unknown)"); + } return 0; } -- cgit v1.2.3