aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2021-10-04 16:17:11 +0200
committerWilliam Boman <william@redwill.se>2021-10-04 16:17:11 +0200
commit86d4313c6ce9b5b32b4c0df30ff4896982c51ba7 (patch)
treea72c7dc3b3c2b31ce02a50f24b841afdc770c9af /lua
parentadd emmet_ls (#122) (diff)
downloadmason-86d4313c6ce9b5b32b4c0df30ff4896982c51ba7.tar
mason-86d4313c6ce9b5b32b4c0df30ff4896982c51ba7.tar.gz
mason-86d4313c6ce9b5b32b4c0df30ff4896982c51ba7.tar.bz2
mason-86d4313c6ce9b5b32b4c0df30ff4896982c51ba7.tar.lz
mason-86d4313c6ce9b5b32b4c0df30ff4896982c51ba7.tar.xz
mason-86d4313c6ce9b5b32b4c0df30ff4896982c51ba7.tar.zst
mason-86d4313c6ce9b5b32b4c0df30ff4896982c51ba7.zip
sanitize env in debug logs
Diffstat (limited to 'lua')
-rw-r--r--lua/nvim-lsp-installer/data.lua9
-rw-r--r--lua/nvim-lsp-installer/log.lua15
-rw-r--r--lua/nvim-lsp-installer/process.lua34
3 files changed, 53 insertions, 5 deletions
diff --git a/lua/nvim-lsp-installer/data.lua b/lua/nvim-lsp-installer/data.lua
index 71267ce6..948c53de 100644
--- a/lua/nvim-lsp-installer/data.lua
+++ b/lua/nvim-lsp-installer/data.lua
@@ -59,6 +59,15 @@ function Data.list_copy(list)
return result
end
+function Data.list_any(list, predicate)
+ for i = 1, #list do
+ if predicate(list[i]) then
+ return true
+ end
+ end
+ return false
+end
+
function Data.json_decode(data)
if vim.json and vim.json.decode then
return vim.json.decode(data)
diff --git a/lua/nvim-lsp-installer/log.lua b/lua/nvim-lsp-installer/log.lua
index 54aa00ea..50a1e8a7 100644
--- a/lua/nvim-lsp-installer/log.lua
+++ b/lua/nvim-lsp-installer/log.lua
@@ -1,5 +1,8 @@
+local Data = require("nvim-lsp-installer.data")
local settings = require "nvim-lsp-installer.settings"
+local tbl_pack = Data.tbl_pack
+
local config = {
-- Name of the plugin. Prepended to log messages
name = "lsp-installer",
@@ -128,9 +131,15 @@ do
end
-- log.lazy_info(expensive_to_calculate)
- log[("lazy_%s"):format(x.name)] = function()
- return log_at_level(x, function(f)
- return f()
+ log[("lazy_%s"):format(x.name)] = function(f)
+ return log_at_level(x, function()
+ local passed = tbl_pack(f())
+ local fmt = table.remove(passed, 1)
+ local inspected = {}
+ for _, v in ipairs(passed) do
+ table.insert(inspected, vim.inspect(v))
+ end
+ return string.format(fmt, unpack(inspected))
end)
end
diff --git a/lua/nvim-lsp-installer/process.lua b/lua/nvim-lsp-installer/process.lua
index fc055061..8ee90c96 100644
--- a/lua/nvim-lsp-installer/process.lua
+++ b/lua/nvim-lsp-installer/process.lua
@@ -1,7 +1,10 @@
local log = require "nvim-lsp-installer.log"
+local Data = require "nvim-lsp-installer.data"
local platform = require "nvim-lsp-installer.platform"
local uv = vim.loop
+local list_any = Data.list_any
+
local M = {}
local function connect_sink(pipe, sink)
@@ -41,6 +44,30 @@ function M.graft_env(env)
return root_env
end
+local function sanitize_env_list(env_list)
+ local sanitized_list = {}
+ for _, env in ipairs(env_list) do
+ local safe_envs = {
+ "GO111MODULE",
+ "GOBIN",
+ "GOPATH",
+ "PATH",
+ "GEM_HOME",
+ "GEM_PATH",
+ }
+ local is_safe_env = list_any(safe_envs, function(safe_env)
+ return env:find(safe_env .. "=") == 1
+ end)
+ if is_safe_env then
+ sanitized_list[#sanitized_list+1] = env
+ else
+ local idx = env:find "="
+ sanitized_list[#sanitized_list+1] = env:sub(1, idx) .. "=<redacted>"
+ end
+ end
+ return sanitized_list
+end
+
function M.spawn(cmd, opts, callback)
local stdin = uv.new_pipe(false)
local stdout = uv.new_pipe(false)
@@ -48,8 +75,6 @@ function M.spawn(cmd, opts, callback)
local stdio = { stdin, stdout, stderr }
- log.debug("Spawning", cmd, opts)
-
local spawn_opts = {
env = opts.env,
stdio = stdio,
@@ -59,6 +84,11 @@ function M.spawn(cmd, opts, callback)
hide = true,
}
+ log.lazy_debug(function()
+ local sanitized_env = sanitize_env_list(opts.env)
+ return "Spawning cmd=%s, args=%s, cwd=%s, env=%s", cmd, opts.args, opts.cwd, sanitized_env
+ end)
+
local handle, pid
handle, pid = uv.spawn(cmd, spawn_opts, function(exit_code, signal)
local successful = exit_code == 0 and signal == 0