ssh localhost yes | true (follow up)

Damien Miller djm at mindrot.org
Fri Apr 24 10:43:27 EST 2009


On Thu, 23 Apr 2009, Kyle McKay wrote:

> > > tests of S_IFSOCK or S_IFIFO so I'm unclear on how it would be able to
> > > tell the difference between 3 separate pairs of pipes (normal
> > > USE_PIPES case), 1 shared socket pair + 1 separate socket pair
> > > (normal !USE_PIPES case) and 1 socket pair + 2 pairs of pipes.
> > 
> > The test is in channel_register_fds(), look for c->sock.
> 
> Thanks for pointing me to that.
> 
> Looks like you get some extra behavior if rfd == wfd, but you're not getting
> that behavior normally when USE_PIPES is always defined in session.c, so
> nothing obvious jumps out at me as breakage-waiting-to-happen with the patch
> applied.

channel code bugs rarely manifest in obvious ways, and they are difficult
to debug when they do. I can't say for certain that mixing socketpairs and
pipes will or won't cause problems, but I don't think it is a good path to
go down if it is just papering over other problems.

> Apparently bash isn't the only program to test that and sending Apple a bunch
> of patches for a bunch of different programs is likely to delay getting any
> fix accepted (be lucky if they take any fix at all and issue an official
> update containing the fix within the next 6 months).
> 
> In fact, Ubuntu bash gets it right, ("ssh localhost yes | true" does not hang
> while "ssh localhost printenv" indicates ~/.bashrc is being run) so that
> suggests Apple's bash sources are behind the times or also contain
> bug-inducing patches or there is some other Darwin-specific behavior going on
> that breaks things.
> 
> Why not enhance ssh to officially support a socket/pipe combination?

I don't think it is an "enhancement" to work around a bug that will be
fixed in a couple of months. It is just added complexity that we will have
to maintain forever.

-d


More information about the openssh-unix-dev mailing list