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>();


Reply via email to