fix(cli): GIT_CONFIG* envvars leaking child processes

When launching Doom via 'doom run', the child process inherits
bin/doom's environment. This change restricts this sub-environment to
the intended target: straight and its use of git.

Fix: #6320
This commit is contained in:
Henrik Lissner 2022-04-21 20:00:50 +02:00
parent 8c03fa0e3d
commit fbfc635300
No known key found for this signature in database
GPG Key ID: B60957CA074D39A3
2 changed files with 9 additions and 3 deletions

View File

@ -2,9 +2,6 @@
:; set -e # -*- mode: emacs-lisp; lexical-binding: t -*-
:; case "$EMACS" in *term*) EMACS=emacs ;; *) EMACS="${EMACS:-emacs}" ;; esac
:; $EMACS --version >/dev/null 2>&1 || { >&2 echo "Can't find emacs in your PATH"; exit 1; }
:; unset GIT_CONFIG
:; export GIT_CONFIG_NOSYSTEM=1
:; export GIT_CONFIG_GLOBAL="${DOOMGITCONFIG:-/dev/null}"
:; $EMACS --no-site-file --script "$0" -- "$@" || __DOOMCODE=$?
:; [ "${__DOOMCODE:-0}" -eq 128 ] && { sh "`$EMACS -Q --batch --eval '(princ temporary-file-directory)'`/doom.sh" "$0" "$@" && true; __DOOMCODE=$?; }
:; exit $__DOOMCODE

View File

@ -118,3 +118,12 @@ However, in batch mode, print to stdout instead of stderr."
(and (string-match-p "^\\(Cloning\\|\\(Reb\\|B\\)uilding\\) " msg)
(not (string-suffix-p "...done" msg))
(doom--print (doom--format (concat "> " msg))))))
(defadvice! doom--straight-ignore-gitconfig-a (fn &rest args)
"Prevent user and system git configuration from interfering with git calls."
:around #'straight--process-call
(letenv! (("GIT_CONFIG" nil)
("GIT_CONFIG_NOSYSTEM" "1")
("GIT_CONFIG_GLOBAL" (or (getenv "DOOMGITCONFIG")
"/dev/null")))
(apply fn args)))