Skip to content

Commit

Permalink
upstream commit
Browse files Browse the repository at this point in the history
purge the last traces of SSHv1 from the TTY modes
handling code

ok markus

Upstream-ID: 963a19f1e06577377c38a3b7ce468f121b966195
  • Loading branch information
djmdjm committed May 1, 2017
1 parent dfa641f commit aebd0ab
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 32 deletions.
25 changes: 8 additions & 17 deletions ttymodes.c
@@ -1,4 +1,4 @@
/* $OpenBSD: ttymodes.c,v 1.31 2017/04/30 23:13:25 djm Exp $ */
/* $OpenBSD: ttymodes.c,v 1.32 2017/04/30 23:26:54 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
Expand Down Expand Up @@ -59,12 +59,10 @@

#define TTY_OP_END 0
/*
* uint32 (u_int) follows speed in SSH1 and SSH2
* uint32 (u_int) follows speed.
*/
#define TTY_OP_ISPEED_PROTO1 192
#define TTY_OP_OSPEED_PROTO1 193
#define TTY_OP_ISPEED_PROTO2 128
#define TTY_OP_OSPEED_PROTO2 129
#define TTY_OP_ISPEED 128
#define TTY_OP_OSPEED 129

/*
* Converts POSIX speed_t to a baud rate. The values of the
Expand Down Expand Up @@ -282,11 +280,8 @@ tty_make_modes(int fd, struct termios *tiop)
struct termios tio;
int baud;
Buffer buf;
int tty_op_ospeed, tty_op_ispeed;

buffer_init(&buf);
tty_op_ospeed = TTY_OP_OSPEED_PROTO2;
tty_op_ispeed = TTY_OP_ISPEED_PROTO2;

if (tiop == NULL) {
if (fd == -1) {
Expand All @@ -302,10 +297,10 @@ tty_make_modes(int fd, struct termios *tiop)

/* Store input and output baud rates. */
baud = speed_to_baud(cfgetospeed(&tio));
buffer_put_char(&buf, tty_op_ospeed);
buffer_put_char(&buf, TTY_OP_OSPEED);
buffer_put_int(&buf, baud);
baud = speed_to_baud(cfgetispeed(&tio));
buffer_put_char(&buf, tty_op_ispeed);
buffer_put_char(&buf, TTY_OP_ISPEED);
buffer_put_int(&buf, baud);

/* Store values of mode flags. */
Expand Down Expand Up @@ -362,19 +357,15 @@ tty_parse_modes(int fd, int *n_bytes_ptr)
case TTY_OP_END:
goto set;

/* XXX: future conflict possible */
case TTY_OP_ISPEED_PROTO1:
case TTY_OP_ISPEED_PROTO2:
case TTY_OP_ISPEED:
n_bytes += 4;
baud = packet_get_int();
if (failure != -1 &&
cfsetispeed(&tio, baud_to_speed(baud)) == -1)
error("cfsetispeed failed for %d", baud);
break;

/* XXX: future conflict possible */
case TTY_OP_OSPEED_PROTO1:
case TTY_OP_OSPEED_PROTO2:
case TTY_OP_OSPEED:
n_bytes += 4;
baud = packet_get_int();
if (failure != -1 &&
Expand Down
21 changes: 6 additions & 15 deletions ttymodes.h
@@ -1,4 +1,4 @@
/* $OpenBSD: ttymodes.h,v 1.15 2016/05/03 09:03:49 dtucker Exp $ */
/* $OpenBSD: ttymodes.h,v 1.16 2017/04/30 23:26:54 djm Exp $ */

/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
Expand Down Expand Up @@ -38,22 +38,13 @@
*/

/*
* SSH1:
* The tty mode description is a stream of bytes. The stream consists of
* The tty mode description is a string, consisting of
* opcode-arguments pairs. It is terminated by opcode TTY_OP_END (0).
* Opcodes 1-127 have one-byte arguments. Opcodes 128-159 have integer
* arguments. Opcodes 160-255 are not yet defined, and cause parsing to
* stop (they should only be used after any other data).
* Opcodes 1-159 have uint32 arguments.
* Opcodes 160-255 are not yet defined and cause parsing to stop (they
* should only be used after any other data).
*
* SSH2:
* Differences between SSH1 and SSH2 terminal mode encoding include:
* 1. Encoded terminal modes are represented as a string, and a stream
* of bytes within that string.
* 2. Opcode arguments are uint32 (1-159); 160-255 remain undefined.
* 3. The values for TTY_OP_ISPEED and TTY_OP_OSPEED are different;
* 128 and 129 vs. 192 and 193 respectively.
*
* The client puts in the stream any modes it knows about, and the
* The client puts in the string any modes it knows about, and the
* server ignores any modes it does not know about. This allows some degree
* of machine-independence, at least between systems that use a posix-like
* tty interface. The protocol can support other systems as well, but might
Expand Down

0 comments on commit aebd0ab

Please sign in to comment.