Fix handling for TEMP, TMP, and TMPDIR variables:
authorZac Medico <zmedico@gentoo.org>
Thu, 10 Dec 2009 01:04:26 +0000 (01:04 -0000)
committerZac Medico <zmedico@gentoo.org>
Thu, 10 Dec 2009 01:04:26 +0000 (01:04 -0000)
* Add to whitelist so current values are always used.
* Always filter them from the saved environment.
* Always add thier values to SANDBOX_WRITE. (trunk r14973)

svn path=/main/branches/2.1.7/; revision=15007

bin/ebuild.sh
bin/isolated-functions.sh
pym/portage/__init__.py

index d5d654b40b0a4fb2eb81085a25fe6ec975620f74..404269b38b71e2ba89e4567c294b1e24dc2f9114 100755 (executable)
@@ -17,6 +17,12 @@ export SANDBOX_READ="${SANDBOX_READ:+${SANDBOX_READ}:}/dev/stdin"
 # 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
index a557d9fd9429cdaad323c72a8a46e8ee429e25b8..4f1ad1c6396cb6e1a669d961484aec6d4b8dc387 100755 (executable)
@@ -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
index 333a242943b554e784a505391d41dab865a55a77..0690267fa38af6cbdaaff3e780780b06ca73c8cf 100644 (file)
@@ -1432,6 +1432,11 @@ class config(object):
                "TERM", "TERMCAP", "USER",
        ]
 
+       # tempdir settings
+       _environ_whitelist += [
+               "TMPDIR", "TEMP", "TMP",
+       ]
+
        # other variables inherited from the calling environment
        _environ_whitelist += [
                "CVS_RSH", "ECHANGELOG_USER",