fix(openbao): keep a failing address probe from aborting the deploy
host_addrs() ends in a pipeline, so under `set -o pipefail` a probe that
exits non-zero -- even after printing perfectly usable addresses, or
because awk is missing -- made `addrs="$(host_addrs)"` non-zero, and
`set -e` killed deploy.sh at that line.
Nothing was printed when it did: the 2>/dev/null had already swallowed the
tool's own error and the fail-open guard on the next lines was never
reached, so the operator got a bare exit 1 mid-deploy with nothing to
diagnose. Worst case it aborted a deploy whose bind address was CORRECT --
reproduced with an `ip` stub that prints the matching address, then exits 1.
Capture with `|| true` so the emptiness test actually drives the fail-open
the comment beside it already promised. Neutralising inside host_addrs
instead would not cover a missing awk, since pipefail takes the rightmost
non-zero status.
Re-verified the check is not weakened: a healthy probe with the address
genuinely absent still lists the host's addresses and dies with the full
message, and all seven .env/environment precedence cases are unchanged.
Found by adversarial review of 920edc5.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -141,11 +141,15 @@ check_bind_addr() {
|
||||
warn "SKIP_BIND_CHECK=1 -- not checking whether ${bare} is local."
|
||||
return 0
|
||||
fi
|
||||
addrs="$(host_addrs)"
|
||||
# `|| true` is load-bearing: host_addrs ends in a pipeline, and under
|
||||
# `set -o pipefail` a probe that fails AFTER printing usable addresses (or an
|
||||
# absent awk) would make this plain assignment non-zero and kill the whole
|
||||
# deploy at this line, silently -- before the fail-open below is ever reached.
|
||||
addrs="$(host_addrs || true)"
|
||||
# Empty means the probe found no tool to ask, not that the address is absent
|
||||
# -- do not block a deploy on that.
|
||||
if [[ -z "$addrs" ]]; then
|
||||
warn "No ip/ifconfig to list this host's addresses; skipping the bind check."
|
||||
warn "Could not list this host's addresses (no ip/ifconfig, or it failed); skipping the bind check."
|
||||
return 0
|
||||
fi
|
||||
if printf '%s\n' "$addrs" | grep -qxF "$bare"; then
|
||||
|
||||
Reference in New Issue
Block a user