Author: gnodet
Date: Tue Dec 23 12:29:05 2008
New Revision: 729093
URL: http://svn.apache.org/viewvc?rev=729093&view=rev
Log:
SSHD-7: sshd barfs when an openssh client uses agent forwarding or x11
forwarding
Modified:
mina/sshd/trunk/src/main/java/org/apache/sshd/server/channel/ChannelSession.java
Modified:
mina/sshd/trunk/src/main/java/org/apache/sshd/server/channel/ChannelSession.java
URL:
http://svn.apache.org/viewvc/mina/sshd/trunk/src/main/java/org/apache/sshd/server/channel/ChannelSession.java?rev=729093&r1=729092&r2=729093&view=diff
==============================================================================
---
mina/sshd/trunk/src/main/java/org/apache/sshd/server/channel/ChannelSession.java
(original)
+++
mina/sshd/trunk/src/main/java/org/apache/sshd/server/channel/ChannelSession.java
Tue Dec 23 12:29:05 2008
@@ -25,8 +25,6 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ExecutorService;
import org.apache.sshd.common.NamedFactory;
import org.apache.sshd.common.SshConstants;
@@ -98,7 +96,7 @@
}
}
public static PtyMode fromInt(int b) {
- return commands.get(b);
+ return commands.get(0x00FF & (b + 256));
}
}
@@ -196,6 +194,12 @@
return false;
}
}
+ if ("[email protected]".equals(type)) {
+ return handleAgentForwarding(buffer);
+ }
+ if ("x11-req".equals(type)) {
+ return handleX11Forwarding(buffer);
+ }
return false;
}
@@ -406,6 +410,28 @@
return true;
}
+ protected boolean handleAgentForwarding(Buffer buffer) throws IOException {
+ boolean wantReply = buffer.getBoolean();
+ // TODO: start agent forwarding
+ if (wantReply) {
+ buffer =
session.createBuffer(SshConstants.Message.SSH_MSG_CHANNEL_SUCCESS);
+ buffer.putInt(id);
+ session.writePacket(buffer);
+ }
+ return true;
+ }
+
+ protected boolean handleX11Forwarding(Buffer buffer) throws IOException {
+ boolean wantReply = buffer.getBoolean();
+ // TODO: start x11 forwarding
+ if (wantReply) {
+ buffer =
session.createBuffer(SshConstants.Message.SSH_MSG_CHANNEL_SUCCESS);
+ buffer.putInt(id);
+ session.writePacket(buffer);
+ }
+ return true;
+ }
+
protected synchronized void addEnvVariable(String name, String value) {
if (env == null) {
env = new HashMap<String,String>();