You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by lg...@apache.org on 2016/07/26 17:31:38 UTC
mina-sshd git commit: [SSHD-679] Support (or ignore) IUTF8 terminal
mode (42)
Repository: mina-sshd
Updated Branches:
refs/heads/master 61feea8b3 -> 3c6b0540c
[SSHD-679] Support (or ignore) IUTF8 terminal mode (42)
Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/3c6b0540
Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/3c6b0540
Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/3c6b0540
Branch: refs/heads/master
Commit: 3c6b0540c95872216b966d496f1551d42eb2652d
Parents: 61feea8
Author: Lyor Goldstein <ly...@gmail.com>
Authored: Tue Jul 26 20:33:02 2016 +0300
Committer: Lyor Goldstein <ly...@gmail.com>
Committed: Tue Jul 26 20:33:02 2016 +0300
----------------------------------------------------------------------
.../org/apache/sshd/common/channel/PtyMode.java | 6 +++++-
.../sshd/server/channel/ChannelSession.java | 19 ++++++++++++-------
2 files changed, 17 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/3c6b0540/sshd-core/src/main/java/org/apache/sshd/common/channel/PtyMode.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/PtyMode.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/PtyMode.java
index f83cf9c..cae1595 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/channel/PtyMode.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/PtyMode.java
@@ -163,6 +163,10 @@ public enum PtyMode {
* Ring bell on input queue full.
*/
IMAXBEL(41),
+ /**
+ * @see <A HREF="https://tools.ietf.org/html/draft-sgtatham-secsh-iutf8-01">IUTF8 Terminal Mode in Secure Shell</A>
+ */
+ IUTF8(42),
/////////////////////////////// L-flags //////////////////////////////////
@@ -293,7 +297,7 @@ public enum PtyMode {
private static final long serialVersionUID = 1L; // we're not serializing it
{
- for (PtyMode c : PtyMode.values()) {
+ for (PtyMode c : PtyMode.MODES) {
put(c.toInt(), c);
}
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/3c6b0540/sshd-core/src/main/java/org/apache/sshd/server/channel/ChannelSession.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/channel/ChannelSession.java b/sshd-core/src/main/java/org/apache/sshd/server/channel/ChannelSession.java
index 5843917..a0ede0f 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/channel/ChannelSession.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/channel/ChannelSession.java
@@ -388,23 +388,28 @@ public class ChannelSession extends AbstractServerChannel {
Environment environment = getEnvironment();
Map<PtyMode, Integer> ptyModes = environment.getPtyModes();
- for (int i = 0; i < modes.length && (modes[i] != PtyMode.TTY_OP_END);) {
+ for (int i = 0; (i < modes.length) && (modes[i] != PtyMode.TTY_OP_END);) {
int opcode = modes[i++] & 0x00FF;
- PtyMode mode = PtyMode.fromInt(opcode);
/*
- * According to section 8 of RFC 4254:
+ * According to https://tools.ietf.org/html/rfc4254#section-8:
*
- * "Opcodes 160 to 255 are not yet defined, and cause parsing to stop"
+ * Opcodes 160 to 255 are not yet defined, and cause parsing to stop
*/
- if (mode == null) {
- log.warn("handlePtyReq({}) unknown pty opcode value: {}", this, opcode);
+ if ((opcode >= 160) && (opcode <= 255)) {
+ log.warn("handlePtyReq({}) unknown reserved pty opcode value: {}", this, opcode);
break;
}
+
int val = ((modes[i++] << 24) & 0xff000000)
| ((modes[i++] << 16) & 0x00ff0000)
| ((modes[i++] << 8) & 0x0000ff00)
| ((modes[i++]) & 0x000000ff);
- ptyModes.put(mode, val);
+ PtyMode mode = PtyMode.fromInt(opcode);
+ if (mode == null) {
+ log.warn("handlePtyReq({}) unsupported pty opcode value: {}={}", this, opcode, val);
+ } else {
+ ptyModes.put(mode, val);
+ }
}
if (log.isDebugEnabled()) {