diff --git a/Library/Homebrew/brew.sh b/Library/Homebrew/brew.sh index 1e8fb39982..762cdf2dc3 100644 --- a/Library/Homebrew/brew.sh +++ b/Library/Homebrew/brew.sh @@ -247,6 +247,13 @@ then else HOMEBREW_BREW_CALLER="$(readlink -f "/proc/${PPID}/exe")" fi + HOMEBREW_BREW_CALLER_CHECK_EXIT_CODE="$?" + + if [[ "${HOMEBREW_BREW_CALLER_CHECK_EXIT_CODE}" -ne 0 ]] + then + # Error message already printed above when populating `HOMEBREW_BREW_CALLER`. + odie "failed to check the path to the parent process!" + fi if [[ "${HOMEBREW_BREW_CALLER:-}" != "${HOMEBREW_FORCE_BREW_WRAPPER}" ]] then @@ -269,7 +276,7 @@ or that ${HOMEBREW_FORCE_BREW_WRAPPER_WITHOUT_BREW} comes before ${HOMEBREW_PREF EOS fi - unset HOMEBREW_BREW_CALLER + unset HOMEBREW_BREW_CALLER HOMEBREW_BREW_CALLER_CHECK_EXIT_CODE fi # commands that take a single or no arguments and need to write to HOMEBREW_PREFIX. diff --git a/Library/Homebrew/utils/pid_path.rb b/Library/Homebrew/utils/pid_path.rb index 73f7505b68..e73c088e2a 100755 --- a/Library/Homebrew/utils/pid_path.rb +++ b/Library/Homebrew/utils/pid_path.rb @@ -3,7 +3,7 @@ # frozen_string_literal: true pid = ARGV[0]&.to_i -exit 1 unless pid +raise "Missing `pid` argument!" unless pid require "fiddle" @@ -29,4 +29,8 @@ pointer_to_buffer = Fiddle::Pointer.to_ptr(buffer) # https://github.com/chromium/chromium/blob/86df41504a235f9369f6f53887da12a718a19db4/base/process/process_handle_mac.cc#L37-L44 # https://github.com/apple-oss-distributions/xnu/blob/e3723e1f17661b24996789d8afc084c0c3303b26/libsyscall/wrappers/libproc/libproc.c#L263-L283 return_value = libproc_proc_pidpath_function.call(pid, pointer_to_buffer, buffer_size) -puts pointer_to_buffer.to_s.strip if return_value.positive? +if return_value.positive? + puts pointer_to_buffer.to_s.strip +else + raise "Call to `proc_pidpath` failed! `proc_pidpath` returned #{return_value}." +end