From eedd1852590daf84ce6c60b39418cff882ac8811 Mon Sep 17 00:00:00 2001 From: dmiller Date: Tue, 22 Apr 2025 22:30:01 +0000 Subject: [PATCH] Don't use a stack var for context across Lua yields --- nse_libssh2.cc | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/nse_libssh2.cc b/nse_libssh2.cc index 4601bc020..1e5a72012 100644 --- a/nse_libssh2.cc +++ b/nse_libssh2.cc @@ -540,9 +540,10 @@ static int userauth_publickey (lua_State *L, int status, lua_KContext ctx) { } static int l_userauth_publickey (lua_State *L) { - struct publickey_ctx params; - validate_publickey_params(L, ¶ms); - return userauth_publickey(L, 0, (lua_KContext) ¶ms); + publickey_ctx *params = NULL; + params = (publickey_ctx *)lua_newuserdatauv(L, sizeof(publickey_ctx), 0); + validate_publickey_params(L, params); + return userauth_publickey(L, 0, (lua_KContext) params); } static int userauth_publickey_frommemory (lua_State *L, int status, lua_KContext ctx) { @@ -561,9 +562,10 @@ static int userauth_publickey_frommemory (lua_State *L, int status, lua_KContext } static int l_userauth_publickey_frommemory (lua_State *L) { - struct publickey_ctx params; - validate_publickey_params(L, ¶ms); - return userauth_publickey_frommemory(L, 0, (lua_KContext) ¶ms); + publickey_ctx *params = NULL; + params = (publickey_ctx *)lua_newuserdatauv(L, sizeof(publickey_ctx), 0); + validate_publickey_params(L, params); + return userauth_publickey_frommemory(L, 0, (lua_KContext) params); } static int l_read_publickey (lua_State *L) {