# HG changeset patch # User Kim Alvefur # Date 1618007285 -7200 # Node ID 56546fb3429b7a1c70c84760053551d7ddca4209 # Parent c729365f109182e2948c31dabfa49d8271f15aa1 clix.raw: Allow unsandboxed arbitrary code execution Useful for doing things to clix/verse internals diff -r c729365f1091 -r 56546fb3429b clix/raw.lua --- a/clix/raw.lua Sat Apr 10 00:25:44 2021 +0200 +++ b/clix/raw.lua Sat Apr 10 00:28:05 2021 +0200 @@ -85,13 +85,22 @@ return end if data:sub(1,1) ~= "<" then - local chunk, err = loadstring("return "..data, "@stdin"); + local sandboxed = true; + if data:sub(1,1) == ">" then + sandboxed = false; + data = data:sub(2); + else + data = "return "..data; + end + local chunk, err = loadstring(data, "@stdin"); if not chunk then conn:error(err); return; end data = ""; - setfenv(chunk, env); + if sandboxed then + setfenv(chunk, env); + end local ok, ret = pcall(chunk); if ok then data = ret