bugzilla-daemon at mindrot.org
2015-Mar-09  18:03 UTC
[Bug 2363] New: With multiplexing, a forwarding is kept in the list of active forwardings even when it fails
https://bugzilla.mindrot.org/show_bug.cgi?id=2363
            Bug ID: 2363
           Summary: With multiplexing, a forwarding is kept in the list of
                    active forwardings even when it fails
           Product: Portable OpenSSH
           Version: 6.7p1
          Hardware: All
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P5
         Component: ssh
          Assignee: unassigned-bugs at mindrot.org
          Reporter: yoann.ricordel at gmail.com
Created attachment 2565
  --> https://bugzilla.mindrot.org/attachment.cgi?id=2565&action=edit
Clear failed remove forwardings in remote_forwards list for Mux mode
When requesting a port forwarding using a control socket, it is kept in
a list so that subsequent requests for the same host and port can
return early. The problem is that it is kept in the list even if the
forwarding failed, leading to subsequent forwarding request to
apparently succeed (ssh returns 0 to the shell).
* How to reproduce (tested on git's master
307bb40277ca2c32e97e61d70d1ed74b571fd6ba):
1) Launch ssh in "master" mode
    # ssh -N -F tunnel.conf tunnel
where tunnel.conf is like
    Host tunnel
        User xxx
        Port xxx
        HostName xxx.xxx.xxx.xxx
        IdentityFile xxx/xxx/id_rsa
        ControlPath /var/run/tunnel.sock
        ControlMaster yes
        BatchMode yes
2) Request a first port redirection (succeeds):
    # ssh -S /var/run/tunnel.sock -O forward -R
0.0.0.0:50004:192.168.0.1:1234 localhost
3) Request a second redirection on the same port, but to a second IP
(which fails, as it should):
    # ssh -S /var/run/tunnel.sock -O forward -R
0.0.0.0:50004:192.168.0.2:1234 localhost
4) Repeat the previous command (which I think should fail, but does
not):
    # ssh -S /var/run/tunnel.sock -O forward -R
0.0.0.0:50004:192.168.0.2:1234 localhost
* Expected result: at step 4), the shell should get a non-zero exit
code
* Actual result: the shell gets a zero exit code
* What happens:
    - During the call 3), the port forwarding is requested to the
server, and the forwarding is added to the configuration (calling
add_remote_forward(&options, &fwd) at mux.c:786)
    - when the forwarding fails, which we know in
mux_confirm_remote_forward(), this forwarding is not cleared from the
list
    - when calling 4), some call to compare_forward(&fwd,
options.remote_forwards + i) (at mux.c:741) returns true, hence
process_mux_open_fwd() returns with success, and in the end, 0 is
returned to the shell.
* Proposed fix:
    When we learn about a forwarding failure in
mux_confirm_remote_forward(), we should clear the associated entry in
options.remote_forwards.
    A patch is attached that does exactly that (doing the same as in
process_mux_close_fwd()).
Does this seem reasonable ? It's the first time that I look at
OpenSSH's code, so I might be missing lots of subtleties.
-- 
You are receiving this mail because:
You are watching the assignee of the bug.
bugzilla-daemon at mindrot.org
2015-Mar-10  08:19 UTC
[Bug 2363] With multiplexing, a forwarding is kept in the list of active forwardings even when it fails
https://bugzilla.mindrot.org/show_bug.cgi?id=2363
Yoann Ricordel <yoann.ricordel at gmail.com> changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |yoann.ricordel at gmail.com
-- 
You are receiving this mail because:
You are watching the assignee of the bug.
bugzilla-daemon at mindrot.org
2015-Apr-17  06:31 UTC
[Bug 2363] With multiplexing, a forwarding is kept in the list of active forwardings even when it fails
https://bugzilla.mindrot.org/show_bug.cgi?id=2363
Damien Miller <djm at mindrot.org> changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
   Attachment #2565|0                           |1
        is obsolete|                            |
           Assignee|unassigned-bugs at mindrot.org |djm at mindrot.org
                 CC|                            |djm at mindrot.org
--- Comment #1 from Damien Miller <djm at mindrot.org> ---
Created attachment 2594
  --> https://bugzilla.mindrot.org/attachment.cgi?id=2594&action=edit
clear failed forwards in mux; check for previously-cleared entries
IMO it's worth checking that a particular entry isn't already cleared,
but I need to think more about where else might fail with zeroed-out
fwd entries
-- 
You are receiving this mail because:
You are watching someone on the CC list of the bug.
You are watching the assignee of the bug.
bugzilla-daemon at mindrot.org
2015-Apr-17  06:31 UTC
[Bug 2363] With multiplexing, a forwarding is kept in the list of active forwardings even when it fails
https://bugzilla.mindrot.org/show_bug.cgi?id=2363
Damien Miller <djm at mindrot.org> changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Blocks|                            |2360
-- 
You are receiving this mail because:
You are watching someone on the CC list of the bug.
You are watching the assignee of the bug.
bugzilla-daemon at mindrot.org
2015-May-01  03:43 UTC
[Bug 2363] With multiplexing, a forwarding is kept in the list of active forwardings even when it fails
https://bugzilla.mindrot.org/show_bug.cgi?id=2363 --- Comment #2 from Damien Miller <djm at mindrot.org> --- Turns out clearing the forward is safe - we already do it in the cancel path. -- You are receiving this mail because: You are watching someone on the CC list of the bug. You are watching the assignee of the bug.
bugzilla-daemon at mindrot.org
2015-May-01  03:44 UTC
[Bug 2363] With multiplexing, a forwarding is kept in the list of active forwardings even when it fails
https://bugzilla.mindrot.org/show_bug.cgi?id=2363
Damien Miller <djm at mindrot.org> changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |dtucker at zip.com.au
   Attachment #2594|                            |ok?(dtucker at zip.com.au)
              Flags|                            |
-- 
You are receiving this mail because:
You are watching someone on the CC list of the bug.
You are watching the assignee of the bug.
bugzilla-daemon at mindrot.org
2015-May-01  03:54 UTC
[Bug 2363] With multiplexing, a forwarding is kept in the list of active forwardings even when it fails
https://bugzilla.mindrot.org/show_bug.cgi?id=2363
Darren Tucker <dtucker at zip.com.au> changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
   Attachment #2594|ok?(dtucker at zip.com.au)     |ok+
              Flags|                            |
-- 
You are receiving this mail because:
You are watching someone on the CC list of the bug.
You are watching the assignee of the bug.
bugzilla-daemon at mindrot.org
2015-May-01  04:03 UTC
[Bug 2363] With multiplexing, a forwarding is kept in the list of active forwardings even when it fails
https://bugzilla.mindrot.org/show_bug.cgi?id=2363 --- Comment #3 from Damien Miller <djm at mindrot.org> --- patch applied, this will be in openssh-6.9 -- You are receiving this mail because: You are watching someone on the CC list of the bug. You are watching the assignee of the bug.
bugzilla-daemon at mindrot.org
2015-May-01  04:55 UTC
[Bug 2363] With multiplexing, a forwarding is kept in the list of active forwardings even when it fails
https://bugzilla.mindrot.org/show_bug.cgi?id=2363
Damien Miller <djm at mindrot.org> changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|NEW                         |RESOLVED
-- 
You are receiving this mail because:
You are watching the assignee of the bug.
You are watching someone on the CC list of the bug.
bugzilla-daemon at mindrot.org
2015-May-04  07:37 UTC
[Bug 2363] With multiplexing, a forwarding is kept in the list of active forwardings even when it fails
https://bugzilla.mindrot.org/show_bug.cgi?id=2363 --- Comment #4 from Yoann Ricordel <yoann.ricordel at gmail.com> --- Yes I did it that way because I saw it was already done like that for cancellings. Sorry I didn't answer quicker to the comment. Thank you for your improvements and integration of the patch. -- You are receiving this mail because: You are watching the assignee of the bug. You are watching someone on the CC list of the bug.
bugzilla-daemon at mindrot.org
2015-Aug-11  13:05 UTC
[Bug 2363] With multiplexing, a forwarding is kept in the list of active forwardings even when it fails
https://bugzilla.mindrot.org/show_bug.cgi?id=2363
Damien Miller <djm at mindrot.org> changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |CLOSED
--- Comment #5 from Damien Miller <djm at mindrot.org> ---
Set all RESOLVED bugs to CLOSED with release of OpenSSH 7.1
-- 
You are receiving this mail because:
You are watching the assignee of the bug.
You are watching someone on the CC list of the bug.