summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-12-09 00:30:46 +0000
committerZac Medico <zmedico@gentoo.org>2009-12-09 00:30:46 +0000
commite4bd03ae54359072a26e767aa68a9a37d7a65488 (patch)
treed05cf083d6dbc921b998d9c38c6b4b6a007fadc3 /bin
parent3a3f1b1f3b61bda1591706d67e17daa5ca5f8d1a (diff)
downloadportage-e4bd03ae54359072a26e767aa68a9a37d7a65488.tar.gz
portage-e4bd03ae54359072a26e767aa68a9a37d7a65488.tar.bz2
portage-e4bd03ae54359072a26e767aa68a9a37d7a65488.zip
Fix handling for TEMP, TMP, and TMPDIR variables:
* Add to whitelist so current values are always used. * Always filter them from the saved environment. * Always add thier values to SANDBOX_WRITE. svn path=/main/trunk/; revision=14973
Diffstat (limited to 'bin')
-rwxr-xr-xbin/ebuild.sh6
-rwxr-xr-xbin/isolated-functions.sh2
2 files changed, 7 insertions, 1 deletions
diff --git a/bin/ebuild.sh b/bin/ebuild.sh
index ef8dc2a0d..fd14314d6 100755
--- a/bin/ebuild.sh
+++ b/bin/ebuild.sh
@@ -11,6 +11,12 @@ PORTAGE_PYM_PATH="${PORTAGE_PYM_PATH:-/usr/lib/portage/pym}"
# environment by modifying our PATH.
unset BASH_ENV
+# Avoid sandbox violations in temporary directories.
+for x in TEMP TMP TMPDIR ; do
+ [[ -n ${!x} ]] && export SANDBOX_WRITE="${SANDBOX_WRITE:+${SANDBOX_WRITE}:}${!x}"
+done
+unset x
+
# sandbox's bashrc sources /etc/profile which unsets ROOTPATH,
# so we have to back it up and restore it.
if [ -n "${PORTAGE_ROOTPATH}" ] ; then
diff --git a/bin/isolated-functions.sh b/bin/isolated-functions.sh
index a557d9fd9..4f1ad1c63 100755
--- a/bin/isolated-functions.sh
+++ b/bin/isolated-functions.sh
@@ -564,7 +564,7 @@ save_ebuild_env() {
PROFILE_PATHS PWORKDIR QA_INTERCEPTORS \
RC_DEFAULT_INDENT RC_DOT_PATTERN RC_ENDCOL \
RC_INDENTATION READONLY_EBUILD_METADATA READONLY_PORTAGE_VARS \
- ROOT ROOTPATH RPMDIR STARTDIR TMP TMPDIR USE_EXPAND \
+ ROOT ROOTPATH RPMDIR STARTDIR TEMP TMP TMPDIR USE_EXPAND \
WARN XARGS _RC_GET_KV_CACHE
# user config variables