commit:     cb788dd9acf9f48a9c4934920ebadaa942fe0682
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 24 10:54:27 2023 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Wed Dec 27 15:09:32 2023 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=cb788dd9

ebuild.sh: Warn about colon-separated argument in sandbox functions

According to PMS and the Devmanual, only a single item is allowed
as argument for addread, addwrite, adddeny and addpredict:
https://projects.gentoo.org/pms/8/pms.html#x1-12300012.3.3
https://devmanual.gentoo.org/function-reference/sandbox-functions/

The previous usage message (contrary to Devmanual policy) had been
added in commit 0c6454261c514f021a4ddce2415a68773027ed6a.

Bug: https://bugs.gentoo.org/920654
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 NEWS          | 4 ++++
 bin/ebuild.sh | 8 ++++++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/NEWS b/NEWS
index e1e47d0a2e..40fdfd9ea2 100644
--- a/NEWS
+++ b/NEWS
@@ -12,6 +12,10 @@ Features:
 * emerge: depclean now returns with failure if no packages are matched
   (bug #917120)
 
+Bug fixes:
+* addread, addwrite, adddeny, addpredict: Warn about passing a colon-separated
+  list of paths as argument (bug #920654).
+
 portage-3.0.58 (2023-12-14)
 --------------
 

diff --git a/bin/ebuild.sh b/bin/ebuild.sh
index dc8d205f9a..c9f7c04e28 100755
--- a/bin/ebuild.sh
+++ b/bin/ebuild.sh
@@ -162,7 +162,10 @@ fi
 __sb_append_var() {
        local _v=$1 ; shift
        local var="SANDBOX_${_v}"
-       [[ -z $1 || -n $2 ]] && die "Usage: add$(LC_ALL=C tr "[:upper:]" 
"[:lower:]" <<< "${_v}") <colon-delimited list of paths>"
+       [[ $# -eq 1 ]] || die "Usage: add${_v,,} <path>"
+       # Make this fatal after 2024-12-31
+       [[ ${1} == *:* ]] \
+               && eqawarn "QA Notice: add${_v,,} called with colon-separated 
argument"
        export ${var}="${!var:+${!var}:}$1"
 }
 # bash-4 version:
@@ -173,8 +176,9 @@ addwrite()   { __sb_append_var WRITE   "$@" ; }
 adddeny()    { __sb_append_var DENY    "$@" ; }
 addpredict() { __sb_append_var PREDICT "$@" ; }
 
+addread /
+addread "${PORTAGE_TMPDIR}/portage"
 addwrite "${PORTAGE_TMPDIR}/portage"
-addread "/:${PORTAGE_TMPDIR}/portage"
 [[ -n ${PORTAGE_GPG_DIR} ]] && addpredict "${PORTAGE_GPG_DIR}"
 
 # Avoid sandbox violations in temporary directories.

Reply via email to