From 3c5f007bfa1a469ef3e1a048ee163f3eaa73cb71 Mon Sep 17 00:00:00 2001 From: Martin Afanasjew Date: Wed, 29 Jun 2016 16:20:47 +0200 Subject: [PATCH] bin/brew: fix corner cases in prefix computation If `bin/brew` happens to be symlinked to `/brew`, `/bin/brew`, or some similar location or (worse yet) Homebrew is installed to `/`, then computation of the prefix and/or repository path could break down and result in an invalid or empty path. Closes Homebrew/homebrew-core#2430. --- bin/brew | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/bin/brew b/bin/brew index b49b961e12..77611c153d 100755 --- a/bin/brew +++ b/bin/brew @@ -5,10 +5,13 @@ quiet_cd() { cd "$@" >/dev/null } -BREW_FILE_DIRECTORY="$(quiet_cd "${0%/*}" && pwd -P)" -HOMEBREW_BREW_FILE="$BREW_FILE_DIRECTORY/${0##*/}" +BREW_FILE_DIRECTORY="$(quiet_cd "${0%/*}/" && pwd -P)" +HOMEBREW_BREW_FILE="${BREW_FILE_DIRECTORY%/}/${0##*/}" HOMEBREW_PREFIX="${HOMEBREW_BREW_FILE%/*/*}" +[[ -n "$HOMEBREW_PREFIX" && "$HOMEBREW_PREFIX" != "$HOMEBREW_BREW_FILE" ]] \ + || HOMEBREW_PREFIX="/" + HOMEBREW_REPOSITORY="$HOMEBREW_PREFIX" if [[ -L "$HOMEBREW_BREW_FILE" ]]