Skip to content

Commit

Permalink
Merge pull request #4397 from woodruffw/forbid-temp-prefix
Browse files Browse the repository at this point in the history
brew.sh: Don't allow system tmp dirs as prefixes
  • Loading branch information
MikeMcQuaid committed Jul 3, 2018
2 parents c818065 + fd01415 commit 09ee556
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 14 deletions.
36 changes: 23 additions & 13 deletions Library/Homebrew/brew.sh
Expand Up @@ -104,26 +104,20 @@ then
HOMEBREW_FORCE_BREWED_GIT="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
HOMEBREW_PROCESSOR="$(uname -m)"
HOMEBREW_PRODUCT="${HOMEBREW_SYSTEM}brew"
[[ -n "$HOMEBREW_LINUX" ]] && HOMEBREW_OS_VERSION="$(lsb_release -sd 2>/dev/null)"
: "${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

if [[ -n "$HOMEBREW_FORCE_BREWED_CURL" &&
Expand Down Expand Up @@ -153,6 +147,7 @@ export HOMEBREW_BREW_FILE
export HOMEBREW_PREFIX
export HOMEBREW_REPOSITORY
export HOMEBREW_LIBRARY
export HOMEBREW_TEMP

# Declared in brew.sh
export HOMEBREW_VERSION
Expand Down Expand Up @@ -309,6 +304,21 @@ EOS
}
check-run-command-as-root

check-prefix-is-not-tmpdir() {
[[ -z "${HOMEBREW_MACOS}" ]] && return

if [[ "${HOMEBREW_PREFIX}" = "${HOMEBREW_TEMP}"* ]]
then
odie <<EOS
Your HOMEBREW_PREFIX is in the Homebrew 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
in the Homebrew temporary directory.
EOS
fi
}
check-prefix-is-not-tmpdir

if [[ "$HOMEBREW_PREFIX" = "/usr/local" &&
"$HOMEBREW_PREFIX" != "$HOMEBREW_REPOSITORY" &&
"$HOMEBREW_CELLAR" = "$HOMEBREW_REPOSITORY/Cellar" ]]
Expand Down
2 changes: 1 addition & 1 deletion Library/Homebrew/config.rb
Expand Up @@ -39,7 +39,7 @@
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["HOMEBREW_TEMP"]).realpath

unless defined? HOMEBREW_LIBRARY_PATH
# Root of the Homebrew code base
Expand Down

0 comments on commit 09ee556

Please sign in to comment.