[jira] [Resolved] (SSHD-1244) Client fails window adjust above Integer.MAX_VALUE
[ https://issues.apache.org/jira/browse/SSHD-1244?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Lyor Goldstein resolved SSHD-1244. -- Fix Version/s: 2.9.0 Resolution: Fixed > Client fails window adjust above Integer.MAX_VALUE > -- > > Key: SSHD-1244 > URL: https://issues.apache.org/jira/browse/SSHD-1244 > Project: MINA SSHD > Issue Type: Bug >Affects Versions: 2.8.0 >Reporter: Ryosuke Kanda >Assignee: Lyor Goldstein >Priority: Minor > Fix For: 2.9.0 > > Attachments: Main.java > > > If the new window size specified by SSH_MSG_CHANNEL_WINDOW_ADJUST exceeds > INT_MAX, it will not be recognized correctly. > I think the cause is in the following places: > org.apache.sshd.common.channel.Window.expand(int) > > I am doing machine translation, so please allow it to be unnatural. > > I encountered this issue when I was using ProFTPD as an SFTP server. > The version of ProFTPD is 1.3.5e. > The SFTP feature of ProFTPD notifies 2 ^ 32-1 bytes as the initial window > size by default. > I've confirmed that SSHD can handle this without any problems, so I sent a > 4GB file to see what happens when Window Adjust is done. > As a result, a Window Adjust was done and SSHD was unable to handle this > successfully. > > I have attached the client implementation to this issue. > (Maybe a poor implementation ...) > The console logs, including the debug logs, were too large to attach. > The parts that are clearly set for the SSH client are as follows. > ServerKeyVerifier > HostConfigEntryResolver > KeyIdentityProvider > In the log, the part where the error occurred is as follows. > You can see that SSHD recognizes the new Window size as a negative value. > {code:java} > [sshd-SshClient[343f4d3d]-nio2-thread-5] DEBUG > org.apache.sshd.sftp.client.impl.DefaultSftpClient$SftpChannelSubsystem - > handleWindowAdjust(SftpChannelSubsystem[id=0, > recipient=0]-ClientSessionImpl[kada@/192.168.12.222:18022][sftp]) > SSH_MSG_CHANNEL_WINDOW_ADJUST window=-94217 > [sshd-SshClient[343f4d3d]-nio2-thread-5] DEBUG > org.apache.sshd.common.io.nio2.Nio2Session - > handleReadCycleFailure(Nio2Session[local=/0:0:0:0:0:0:0:0:51143, > remote=/192.168.12.222:18022]) IllegalArgumentException after 8166700 nanos > at read cycle=103401: Negative window size: -94217 > [sshd-SshClient[343f4d3d]-nio2-thread-5] DEBUG > org.apache.sshd.common.io.nio2.Nio2Session - > exceptionCaught(Nio2Session[local=/0:0:0:0:0:0:0:0:51143, > remote=/192.168.12.222:18022]) caught IllegalArgumentException[Negative > window size: -94217] - calling handler > [sshd-SshClient[343f4d3d]-nio2-thread-5] DEBUG > org.apache.sshd.client.session.ClientSessionImpl - > signalAuthFailure(ClientSessionImpl[kada@/192.168.12.222:18022]) > type=IllegalArgumentException, signalled=false, first=false: Negative window > size: -94217 > [sshd-SshClient[343f4d3d]-nio2-thread-5] WARN > org.apache.sshd.client.session.ClientSessionImpl - > exceptionCaught(ClientSessionImpl[kada@/192.168.12.222:18022])[state=Opened] > IllegalArgumentException: Negative window size: -94217 > java.lang.IllegalArgumentException: Negative window size: -94217 > at > org.apache.sshd.common.util.ValidateUtils.createFormattedException(ValidateUtils.java:213) > at > org.apache.sshd.common.util.ValidateUtils.throwIllegalArgumentException(ValidateUtils.java:179) > at > org.apache.sshd.common.util.ValidateUtils.checkTrue(ValidateUtils.java:162) > at org.apache.sshd.common.channel.Window.expand(Window.java:123) > at > org.apache.sshd.common.channel.AbstractChannel.handleWindowAdjust(AbstractChannel.java:894) > at > org.apache.sshd.client.channel.AbstractClientChannel.handleWindowAdjust(AbstractClientChannel.java:448) > at > org.apache.sshd.common.session.helpers.AbstractConnectionService.channelWindowAdjust(AbstractConnectionService.java:614) > at > org.apache.sshd.common.session.helpers.AbstractConnectionService.process(AbstractConnectionService.java:477) > at > org.apache.sshd.common.session.helpers.AbstractSession.doHandleMessage(AbstractSession.java:526) > at > org.apache.sshd.common.session.helpers.AbstractSession.handleMessage(AbstractSession.java:452) > at > org.apache.sshd.common.session.helpers.AbstractSession.decode(AbstractSession.java:1524) > at > org.apache.sshd.common.session.helpers.AbstractSession.messageReceived(AbstractSession.java:412) > at > org.apache.sshd.common.session.helpers.AbstractSessionIoHandler.messageReceived(AbstractSessionIoHandler.java:64) > at > org.apache.sshd.common.io.nio2.Nio2Session.handleReadCycleCompletion(Nio2Session.java:359) > at > org.apache.sshd.common.io.nio2.Nio2Session$1.onCompleted(Nio2Session.java:336) > at > org.apache.sshd.common.io.nio2.Nio2Session
[jira] [Commented] (SSHD-1244) Client fails window adjust above Integer.MAX_VALUE
[ https://issues.apache.org/jira/browse/SSHD-1244?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17488990#comment-17488990 ] Lyor Goldstein commented on SSHD-1244: -- Thanks - I'll merge it in and it will be available on our next official release. Meanwhile, if you really need it you can use the libraries you have compiled from the tree I created. +Note:+ the tree will be gone soon, but you can always re-compile the _master_ version since I will be merging into it. > Client fails window adjust above Integer.MAX_VALUE > -- > > Key: SSHD-1244 > URL: https://issues.apache.org/jira/browse/SSHD-1244 > Project: MINA SSHD > Issue Type: Bug >Affects Versions: 2.8.0 >Reporter: Ryosuke Kanda >Assignee: Lyor Goldstein >Priority: Minor > Attachments: Main.java > > > If the new window size specified by SSH_MSG_CHANNEL_WINDOW_ADJUST exceeds > INT_MAX, it will not be recognized correctly. > I think the cause is in the following places: > org.apache.sshd.common.channel.Window.expand(int) > > I am doing machine translation, so please allow it to be unnatural. > > I encountered this issue when I was using ProFTPD as an SFTP server. > The version of ProFTPD is 1.3.5e. > The SFTP feature of ProFTPD notifies 2 ^ 32-1 bytes as the initial window > size by default. > I've confirmed that SSHD can handle this without any problems, so I sent a > 4GB file to see what happens when Window Adjust is done. > As a result, a Window Adjust was done and SSHD was unable to handle this > successfully. > > I have attached the client implementation to this issue. > (Maybe a poor implementation ...) > The console logs, including the debug logs, were too large to attach. > The parts that are clearly set for the SSH client are as follows. > ServerKeyVerifier > HostConfigEntryResolver > KeyIdentityProvider > In the log, the part where the error occurred is as follows. > You can see that SSHD recognizes the new Window size as a negative value. > {code:java} > [sshd-SshClient[343f4d3d]-nio2-thread-5] DEBUG > org.apache.sshd.sftp.client.impl.DefaultSftpClient$SftpChannelSubsystem - > handleWindowAdjust(SftpChannelSubsystem[id=0, > recipient=0]-ClientSessionImpl[kada@/192.168.12.222:18022][sftp]) > SSH_MSG_CHANNEL_WINDOW_ADJUST window=-94217 > [sshd-SshClient[343f4d3d]-nio2-thread-5] DEBUG > org.apache.sshd.common.io.nio2.Nio2Session - > handleReadCycleFailure(Nio2Session[local=/0:0:0:0:0:0:0:0:51143, > remote=/192.168.12.222:18022]) IllegalArgumentException after 8166700 nanos > at read cycle=103401: Negative window size: -94217 > [sshd-SshClient[343f4d3d]-nio2-thread-5] DEBUG > org.apache.sshd.common.io.nio2.Nio2Session - > exceptionCaught(Nio2Session[local=/0:0:0:0:0:0:0:0:51143, > remote=/192.168.12.222:18022]) caught IllegalArgumentException[Negative > window size: -94217] - calling handler > [sshd-SshClient[343f4d3d]-nio2-thread-5] DEBUG > org.apache.sshd.client.session.ClientSessionImpl - > signalAuthFailure(ClientSessionImpl[kada@/192.168.12.222:18022]) > type=IllegalArgumentException, signalled=false, first=false: Negative window > size: -94217 > [sshd-SshClient[343f4d3d]-nio2-thread-5] WARN > org.apache.sshd.client.session.ClientSessionImpl - > exceptionCaught(ClientSessionImpl[kada@/192.168.12.222:18022])[state=Opened] > IllegalArgumentException: Negative window size: -94217 > java.lang.IllegalArgumentException: Negative window size: -94217 > at > org.apache.sshd.common.util.ValidateUtils.createFormattedException(ValidateUtils.java:213) > at > org.apache.sshd.common.util.ValidateUtils.throwIllegalArgumentException(ValidateUtils.java:179) > at > org.apache.sshd.common.util.ValidateUtils.checkTrue(ValidateUtils.java:162) > at org.apache.sshd.common.channel.Window.expand(Window.java:123) > at > org.apache.sshd.common.channel.AbstractChannel.handleWindowAdjust(AbstractChannel.java:894) > at > org.apache.sshd.client.channel.AbstractClientChannel.handleWindowAdjust(AbstractClientChannel.java:448) > at > org.apache.sshd.common.session.helpers.AbstractConnectionService.channelWindowAdjust(AbstractConnectionService.java:614) > at > org.apache.sshd.common.session.helpers.AbstractConnectionService.process(AbstractConnectionService.java:477) > at > org.apache.sshd.common.session.helpers.AbstractSession.doHandleMessage(AbstractSession.java:526) > at > org.apache.sshd.common.session.helpers.AbstractSession.handleMessage(AbstractSession.java:452) > at > org.apache.sshd.common.session.helpers.AbstractSession.decode(AbstractSession.java:1524) > at > org.apache.sshd.common.session.helpers.AbstractSession.messageReceived(AbstractSession.java:412) > at > org.apache.sshd.common.session.helpers.AbstractSessionIoHandler.messageReceived(A