Re: t7528-signed-commit-ssh.sh fails due to ssh-agent fails to start with ENAMETOOLONG
- From
- Lauri Tirkkonen <lauri@hacktheplanet.fi>
- Date
- Oct 17, 2025, 09:52 UTC
- Message-ID
- <aPIR8fB4w5Jkeiq2@mail.hacktheplanet.fi>
- In-Reply-To
- <20251017070912.GA4068463@coredump.intra.peff.net>
Hi Jeff,
On Fri, Oct 17 2025 03:09:12 -0400, Jeff King wrote:
Show 31 quoted lines
> But looking at this test, there's something even more funky going on. > Our $HOME will always have a space in it, because no matter where you > set the root, we will create "trash directory.t7582..." to work in. But > AFAICT, ssh-agent does not quote the path in its output. So for example: > > d='/tmp/has spaces' > mkdir "$d" > HOME=$d ssh-agent > > will produce: > > SSH_AUTH_SOCK=/tmp/has spaces/.ssh/agent/s.IcPuGe26YY.agent.6PtD3uhM4O; export SSH_AUTH_SOCK; > > which is nonsense to eval. And indeed, the "working" version of this > test (without a really long root path) produces: > > ./t7528-signed-commit-ssh.sh: 1: eval: directory.t7528-signed-commit-ssh/.ssh/agent/s.IcPuGe26YY.agent.sOzoazWiDc: not found > > I expected that would cause ssh-add to fail, since our SSH_AUTH_SOCK > would point to truncated garbage, and we can't talk to the agent. But it > doesn't even do that. The extra space turns that line from a variable > assignment into a one-shot variable attached to a command that fails to > run. And so we're left with the original SSH_AUTH_SOCK from the > environment, the one in my real $HOME outside of the trash directory. > Yikes! > > If I unset SSH_AUTH_SOCK in my environment, then the test consistently > fails. But I'm somewhat amazed that nobody has complained about this > before. Surely somebody somewhere (especially CI!) is running t7528 > without SSH_AUTH_SOCK set in the environment. Which makes wonder if I'm > missing something.
I believe the issue surfaced only now because prior to OpenSSH 10.1, ssh-agent would put its socket in /tmp by default, not under $HOME. See https://www.openssh.com/txt/release-10.1
We saw this failure in CI on Alpine Linux and worked around by adding -T to the ssh-agent invocation in this test, but I suppose that won't work for earlier releases of OpenSSH. https://gitlab.alpinelinux.org/alpine/aports/-/commit/81a159c8a371c871c1cd0f212881a757160632fb
-- Lauri Tirkkonen | lotheac @ IRCnet