From 35138dd6ddb42376f9c4d541557454bcf672c659 Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Sat, 30 Jun 2018 09:34:21 -0400 Subject: [PATCH 01/14] brew.sh: Don't allow system tmp dirs as prefixes --- Library/Homebrew/brew.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Library/Homebrew/brew.sh b/Library/Homebrew/brew.sh index ba7572439b..b0a79d4cc3 100644 --- a/Library/Homebrew/brew.sh +++ b/Library/Homebrew/brew.sh @@ -294,6 +294,20 @@ EOS } check-run-command-as-root +check-prefix-is-not-tmpdir() { + if [[ "${HOMEBREW_PREFIX}" = /tmp/* || + "${HOMEBREW_PREFIX}" = /private/tmp/* ]] + then + odie < Date: Sat, 30 Jun 2018 09:47:15 -0400 Subject: [PATCH 02/14] brew.sh: Use realpath to calculate tmpdir --- Library/Homebrew/brew.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/brew.sh b/Library/Homebrew/brew.sh index b0a79d4cc3..a3d329dfd4 100644 --- a/Library/Homebrew/brew.sh +++ b/Library/Homebrew/brew.sh @@ -295,14 +295,13 @@ EOS check-run-command-as-root check-prefix-is-not-tmpdir() { - if [[ "${HOMEBREW_PREFIX}" = /tmp/* || - "${HOMEBREW_PREFIX}" = /private/tmp/* ]] + if [[ $(realpath "${HOMEBREW_PREFIX}") = /private/tmp/* ]] then odie < Date: Sat, 30 Jun 2018 09:47:55 -0400 Subject: [PATCH 03/14] brew.sh: Typo --- Library/Homebrew/brew.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/brew.sh b/Library/Homebrew/brew.sh index a3d329dfd4..b8459808fa 100644 --- a/Library/Homebrew/brew.sh +++ b/Library/Homebrew/brew.sh @@ -298,7 +298,7 @@ check-prefix-is-not-tmpdir() { if [[ $(realpath "${HOMEBREW_PREFIX}") = /private/tmp/* ]] then odie < Date: Sat, 30 Jun 2018 11:13:39 -0400 Subject: [PATCH 04/14] brew.sh: Tweak language --- Library/Homebrew/brew.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/brew.sh b/Library/Homebrew/brew.sh index b8459808fa..5b3cb3d487 100644 --- a/Library/Homebrew/brew.sh +++ b/Library/Homebrew/brew.sh @@ -301,7 +301,7 @@ check-prefix-is-not-tmpdir() { Your HOMEBREW_PREFIX is in the system temporary directory, which Homebrew uses to store downloads and builds. You can resolve this by installing Homebrew to either the standard prefix (/usr/local/) or to a non-standard prefix that is not -the system temporary directory. +in the system temporary directory. EOS fi } From c552e6596ca381cc035128b93013ee2220c728e9 Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Sat, 30 Jun 2018 11:53:29 -0400 Subject: [PATCH 05/14] brew.sh: Remove trailing / from prefix in message --- Library/Homebrew/brew.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/brew.sh b/Library/Homebrew/brew.sh index 5b3cb3d487..42c5b7bb16 100644 --- a/Library/Homebrew/brew.sh +++ b/Library/Homebrew/brew.sh @@ -300,7 +300,7 @@ check-prefix-is-not-tmpdir() { odie < Date: Sat, 30 Jun 2018 12:20:00 -0400 Subject: [PATCH 06/14] bin/brew: Set HOMEBREW_TEMP, allow export --- bin/brew | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/brew b/bin/brew index 6a3d133add..1c5f6468a8 100755 --- a/bin/brew +++ b/bin/brew @@ -21,6 +21,7 @@ symlink_target_directory() { BREW_FILE_DIRECTORY="$(quiet_cd "${0%/*}/" && pwd -P)" HOMEBREW_BREW_FILE="${BREW_FILE_DIRECTORY%/}/${0##*/}" HOMEBREW_PREFIX="${HOMEBREW_BREW_FILE%/*/*}" +HOMEBREW_TEMP="${HOMEBREW_TEMP:-/private/tmp}" # Default to / prefix if unset or the bin/brew file. if [[ -z "$HOMEBREW_PREFIX" || "$HOMEBREW_PREFIX" = "$HOMEBREW_BREW_FILE" ]] @@ -72,7 +73,7 @@ then FILTERED_ENV=() # Filter all but the specific variables. - for VAR in HOME SHELL PATH TERM COLUMNS LOGNAME USER CI TRAVIS SSH_AUTH_SOCK SUDO_ASKPASS \ + for VAR in HOME SHELL PATH TEMP TERM COLUMNS LOGNAME USER CI TRAVIS SSH_AUTH_SOCK SUDO_ASKPASS \ http_proxy https_proxy ftp_proxy no_proxy all_proxy HTTPS_PROXY FTP_PROXY ALL_PROXY \ "${!HOMEBREW_@}" "${!TRAVIS_@}" do From d7cdc9b9a305230b625ba1be42f55420730b5f18 Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Sat, 30 Jun 2018 12:20:49 -0400 Subject: [PATCH 07/14] config: Ensure HOMEBREW_TEMP is absolute --- Library/Homebrew/config.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/config.rb b/Library/Homebrew/config.rb index 38d7c80438..a2515be2b0 100644 --- a/Library/Homebrew/config.rb +++ b/Library/Homebrew/config.rb @@ -39,7 +39,7 @@ HOMEBREW_CACHE_FORMULA = HOMEBREW_CACHE/"Formula" HOMEBREW_LOGS = Pathname.new(ENV["HOMEBREW_LOGS"] || "~/Library/Logs/Homebrew/").expand_path # Must use /tmp instead of $TMPDIR because long paths break Unix domain sockets -HOMEBREW_TEMP = Pathname.new(ENV.fetch("HOMEBREW_TEMP", "/tmp")) +HOMEBREW_TEMP = Pathname.new(ENV.fetch("HOMEBREW_TEMP", "/tmp")).realpath unless defined? HOMEBREW_LIBRARY_PATH # Root of the Homebrew code base From 8e4aab92aa89471317bc4b6f0f741381c40e1979 Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Sat, 30 Jun 2018 12:21:32 -0400 Subject: [PATCH 08/14] brew.sh: Test HOMEBREW_TEMP, not hardcoded tmpdir --- Library/Homebrew/brew.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/brew.sh b/Library/Homebrew/brew.sh index 42c5b7bb16..4db0e27bc3 100644 --- a/Library/Homebrew/brew.sh +++ b/Library/Homebrew/brew.sh @@ -144,6 +144,7 @@ export HOMEBREW_BREW_FILE export HOMEBREW_PREFIX export HOMEBREW_REPOSITORY export HOMEBREW_LIBRARY +export HOMEBREW_TEMP # Declared in brew.sh export HOMEBREW_VERSION @@ -295,7 +296,7 @@ EOS check-run-command-as-root check-prefix-is-not-tmpdir() { - if [[ $(realpath "${HOMEBREW_PREFIX}") = /private/tmp/* ]] + if [[ "${HOMEBREW_PREFIX}" = "${HOMEBREW_TEMP}"* ]] then odie < Date: Sun, 1 Jul 2018 12:33:14 -0400 Subject: [PATCH 09/14] config: Remove /tmp fallback We provide a /private/tmp fallback in bin/brew, so this is no longer necessary. --- Library/Homebrew/config.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/config.rb b/Library/Homebrew/config.rb index a2515be2b0..fde65c978d 100644 --- a/Library/Homebrew/config.rb +++ b/Library/Homebrew/config.rb @@ -39,7 +39,7 @@ HOMEBREW_CACHE_FORMULA = HOMEBREW_CACHE/"Formula" HOMEBREW_LOGS = Pathname.new(ENV["HOMEBREW_LOGS"] || "~/Library/Logs/Homebrew/").expand_path # Must use /tmp instead of $TMPDIR because long paths break Unix domain sockets -HOMEBREW_TEMP = Pathname.new(ENV.fetch("HOMEBREW_TEMP", "/tmp")).realpath +HOMEBREW_TEMP = Pathname.new(ENV["HOMEBREW_TEMP"]).realpath unless defined? HOMEBREW_LIBRARY_PATH # Root of the Homebrew code base From a8bcb5dfa4aade85895ea229902b7e210e94ce46 Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Sun, 1 Jul 2018 12:33:50 -0400 Subject: [PATCH 10/14] bin/brew: Revert allowing export of TEMP --- bin/brew | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/brew b/bin/brew index 1c5f6468a8..2ac4cb922e 100755 --- a/bin/brew +++ b/bin/brew @@ -73,7 +73,7 @@ then FILTERED_ENV=() # Filter all but the specific variables. - for VAR in HOME SHELL PATH TEMP TERM COLUMNS LOGNAME USER CI TRAVIS SSH_AUTH_SOCK SUDO_ASKPASS \ + for VAR in HOME SHELL PATH TERM COLUMNS LOGNAME USER CI TRAVIS SSH_AUTH_SOCK SUDO_ASKPASS \ http_proxy https_proxy ftp_proxy no_proxy all_proxy HTTPS_PROXY FTP_PROXY ALL_PROXY \ "${!HOMEBREW_@}" "${!TRAVIS_@}" do From 039a4ee4b36ff34ed770af4901696c5e9d086006 Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Sun, 1 Jul 2018 12:58:32 -0400 Subject: [PATCH 11/14] brew.sh: Move HOMEBREW_TEMP declaration Additionally, assign HOMEBREW_TEMP based on the host system (/tmp for Linux, /private/tmp for macOS). --- Library/Homebrew/brew.sh | 4 ++++ bin/brew | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/brew.sh b/Library/Homebrew/brew.sh index 4db0e27bc3..68a843b3de 100644 --- a/Library/Homebrew/brew.sh +++ b/Library/Homebrew/brew.sh @@ -108,6 +108,8 @@ then then HOMEBREW_CACHE="$HOME/Library/Caches/Homebrew" fi + + HOMEBREW_TEMP="${HOMEBREW_TEMP:-/private/tmp}" else HOMEBREW_PROCESSOR="$(uname -m)" HOMEBREW_PRODUCT="${HOMEBREW_SYSTEM}brew" @@ -124,6 +126,8 @@ else HOMEBREW_CACHE="$HOME/.cache/Homebrew" fi fi + + HOMEBREW_TEMP="${HOMEBREW_TEMP:-/tmp}" fi if [[ -n "$HOMEBREW_FORCE_BREWED_CURL" && diff --git a/bin/brew b/bin/brew index 2ac4cb922e..6a3d133add 100755 --- a/bin/brew +++ b/bin/brew @@ -21,7 +21,6 @@ symlink_target_directory() { BREW_FILE_DIRECTORY="$(quiet_cd "${0%/*}/" && pwd -P)" HOMEBREW_BREW_FILE="${BREW_FILE_DIRECTORY%/}/${0##*/}" HOMEBREW_PREFIX="${HOMEBREW_BREW_FILE%/*/*}" -HOMEBREW_TEMP="${HOMEBREW_TEMP:-/private/tmp}" # Default to / prefix if unset or the bin/brew file. if [[ -z "$HOMEBREW_PREFIX" || "$HOMEBREW_PREFIX" = "$HOMEBREW_BREW_FILE" ]] From bde7c6b82b7794dda797124b26c8593ca034876c Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Sun, 1 Jul 2018 19:19:55 -0400 Subject: [PATCH 12/14] brew.sh: Use bashisms for default values --- Library/Homebrew/brew.sh | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/Library/Homebrew/brew.sh b/Library/Homebrew/brew.sh index 68a843b3de..7f8d143514 100644 --- a/Library/Homebrew/brew.sh +++ b/Library/Homebrew/brew.sh @@ -104,10 +104,7 @@ then HOMEBREW_SYSTEM_GIT_TOO_OLD="1" fi - if [[ -z "$HOMEBREW_CACHE" ]] - then - HOMEBREW_CACHE="$HOME/Library/Caches/Homebrew" - fi + HOMEBREW_CACHE="${HOMEBREW_CACHE:-${HOME}/Library/Caches/Homebrew}" HOMEBREW_TEMP="${HOMEBREW_TEMP:-/private/tmp}" else @@ -117,15 +114,8 @@ else : "${HOMEBREW_OS_VERSION:=$(uname -r)}" HOMEBREW_OS_USER_AGENT_VERSION="$HOMEBREW_OS_VERSION" - if [[ -z "$HOMEBREW_CACHE" ]] - then - if [[ -n "$XDG_CACHE_HOME" ]] - then - HOMEBREW_CACHE="$XDG_CACHE_HOME/Homebrew" - else - HOMEBREW_CACHE="$HOME/.cache/Homebrew" - fi - fi + cache_home="${XDG_CACHE_HOME:-${HOME}/.cache}" + HOMEBREW_CACHE="${HOMEBREW_CACHE:-${cache_home}/Homebrew}" HOMEBREW_TEMP="${HOMEBREW_TEMP:-/tmp}" fi From 68d3dc1368f54e277e16cbb41684da142a2a53f4 Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Sun, 1 Jul 2018 19:21:50 -0400 Subject: [PATCH 13/14] brew.sh: Only do tmpdir check on macOS --- Library/Homebrew/brew.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Library/Homebrew/brew.sh b/Library/Homebrew/brew.sh index 7f8d143514..703cca457f 100644 --- a/Library/Homebrew/brew.sh +++ b/Library/Homebrew/brew.sh @@ -290,6 +290,8 @@ EOS check-run-command-as-root check-prefix-is-not-tmpdir() { + [[ -z "${HOMEBREW_MACOS}" ]] && return + if [[ "${HOMEBREW_PREFIX}" = "${HOMEBREW_TEMP}"* ]] then odie < Date: Mon, 2 Jul 2018 19:34:19 -0400 Subject: [PATCH 14/14] brew.sh: Upcase var, tweak error language --- Library/Homebrew/brew.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/brew.sh b/Library/Homebrew/brew.sh index 703cca457f..c899eeb2bd 100644 --- a/Library/Homebrew/brew.sh +++ b/Library/Homebrew/brew.sh @@ -114,8 +114,8 @@ else : "${HOMEBREW_OS_VERSION:=$(uname -r)}" HOMEBREW_OS_USER_AGENT_VERSION="$HOMEBREW_OS_VERSION" - cache_home="${XDG_CACHE_HOME:-${HOME}/.cache}" - HOMEBREW_CACHE="${HOMEBREW_CACHE:-${cache_home}/Homebrew}" + CACHE_HOME="${XDG_CACHE_HOME:-${HOME}/.cache}" + HOMEBREW_CACHE="${HOMEBREW_CACHE:-${CACHE_HOME}/Homebrew}" HOMEBREW_TEMP="${HOMEBREW_TEMP:-/tmp}" fi @@ -295,10 +295,10 @@ check-prefix-is-not-tmpdir() { if [[ "${HOMEBREW_PREFIX}" = "${HOMEBREW_TEMP}"* ]] then odie <