From 866946646bc003b15b8f686e0d7543d155f30449 Mon Sep 17 00:00:00 2001 From: Alexey Date: Wed, 6 Aug 2025 09:58:40 +0300 Subject: [PATCH] delete some io.* writing functions --- com/_prepare.lua | 12 ------------ internal/server/sv1/lua_handler.go | 14 +++++++++++++- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/com/_prepare.lua b/com/_prepare.lua index 6952840..98cbbbb 100644 --- a/com/_prepare.lua +++ b/com/_prepare.lua @@ -2,15 +2,3 @@ package.path = package.path .. ";/usr/lib64/lua/5.1/?.lua;/usr/local/share/lua/5.1/?.lua" .. ";./com/?.lua;" package.cpath = package.cpath .. ";/usr/lib64/lua/5.1/?.so;/usr/local/lib/lua/5.1/?.so" -print = function() end -io.write = function(...) end -io.stdout = function() return nil end -io.stderr = function() return nil end -io.read = function(...) return nil end - ----@type table -Status = { - ok = "ok", - error = "error", - invalid = "invalid", -} diff --git a/internal/server/sv1/lua_handler.go b/internal/server/sv1/lua_handler.go index feebe64..5610af9 100644 --- a/internal/server/sv1/lua_handler.go +++ b/internal/server/sv1/lua_handler.go @@ -46,6 +46,18 @@ func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest, L := lua.NewState() defer L.Close() + ioMod := L.GetGlobal("io").(*lua.LTable) + for _, k := range []string{"write", "output", "flush", "read", "input"} { + ioMod.RawSetString(k, lua.LNil) + } + + for _, name := range []string{"stdout", "stderr", "stdin"} { + stream := ioMod.RawGetString(name) + if t, ok := stream.(*lua.LUserData); ok { + t.Metatable = lua.LNil + } + } + seed := rand.Int() loadSessionMod := func(L *lua.LState) int { @@ -59,7 +71,7 @@ func (h *HandlerV1) handleLUA(sid string, r *http.Request, req *rpc.RPCRequest, for k, v := range r.Header { L.SetField(fetchedHeadersTable, k, ConvertGolangTypesToLua(L, v)) } - + headersGetter := L.NewFunction(func(L *lua.LState) int { path := L.OptString(1, "") def := L.Get(2)