From 81dc05871392f5acbf5fadb5bb1991c737e42a5f Mon Sep 17 00:00:00 2001 From: Ulrich Müller Date: Mon, 5 Jun 2023 19:59:33 +0200 Subject: Sanitise PATH MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * bin/eselect.in (PATH): Sanitise, remove Portage's internal ebuild-helpers dir from it. Signed-off-by: Ulrich Müller --- ChangeLog | 3 +++ bin/eselect.in | 13 ++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 701fb9c..fe99690 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2023-06-05 Ulrich Müller + * bin/eselect.in (PATH): Sanitise, remove Portage's internal + ebuild-helpers dir from it. + * bin/eselect.in (EPREFIX): Quote argument of ":" command. This avoids globbing, see: https://www.shellcheck.net/wiki/SC2223 Add some more quotes throughout. diff --git a/bin/eselect.in b/bin/eselect.in index c59a09d..483a572 100755 --- a/bin/eselect.in +++ b/bin/eselect.in @@ -53,13 +53,24 @@ EROOT="${ROOT%${EPREFIX:+/}}${EPREFIX}" "unalias" -a unset -f rm unset CDPATH GLOBIGNORE -IFS=$' \t\n' shopt -s extglob shopt -s expand_aliases umask +rx +# Sanitise PATH: We don't want to execute Portage's internal helpers +# if we're called from an ebuild. +IFS=: +read -r -d '' -a path <<<"${PATH}" +for i in "${!path[@]}"; do + [[ ${path[i]} == */portage?(/*)/ebuild-helpers?(/*) ]] && unset "path[i]" +done +PATH="${path[*]}" +unset i path + +IFS=$' \t\n' + # Save stderr file descriptor if (( BASH_VERSINFO[0] == 4 && BASH_VERSINFO[1] >= 1 || BASH_VERSINFO[0] > 4 )) then -- cgit v1.2.3-65-gdbad