Fix potentially incorrect speed check

We don't know if tio is termios or termios2.
This commit is contained in:
Kim Woelders
2021-06-18 06:59:34 +02:00
parent 42a4e2e062
commit b314659125
+5 -4
View File
@@ -787,7 +787,7 @@ ttynvt_ioctl(fuse_req_t req, int cmd, void *arg,
ttynvt_t *tty = (ttynvt_t *) (uintptr_t) info->fh; ttynvt_t *tty = (ttynvt_t *) (uintptr_t) info->fh;
struct termios2 *tio = &tty->tio; struct termios2 *tio = &tty->tio;
struct winsize ws; struct winsize ws;
unsigned int tiocm = 0; unsigned int tiocm, baud;
int mcr; int mcr;
int val; int val;
int res; int res;
@@ -805,17 +805,18 @@ ttynvt_ioctl(fuse_req_t req, int cmd, void *arg,
case TCSETS: case TCSETS:
CHECK_BUF_IN(sizeof(struct termios)); CHECK_BUF_IN(sizeof(struct termios));
memcpy(tio, in_buf, in_bufsz); memcpy(tio, in_buf, in_bufsz);
byte4 = htonl(_tio_baud(tio)); baud = _tio_baud(tio);
goto do_tcset; goto do_tcset;
case TCSETSF2: case TCSETSF2:
case TCSETSW2: case TCSETSW2:
case TCSETS2: case TCSETS2:
CHECK_BUF_IN(sizeof(struct termios2)); CHECK_BUF_IN(sizeof(struct termios2));
memcpy(tio, in_buf, in_bufsz); memcpy(tio, in_buf, in_bufsz);
byte4 = htonl(_tio2_baud(tio)); baud = _tio2_baud(tio);
goto do_tcset; goto do_tcset;
do_tcset: do_tcset:
/* BEWARE of termios/termios2 buf structure difference! */ /* BEWARE of termios/termios2 buf structure difference! */
byte4 = htonl(baud);
telnet_rfc2217_cfg(tty->tn, TNS_SET_BAUDRATE, &byte4, 4); telnet_rfc2217_cfg(tty->tn, TNS_SET_BAUDRATE, &byte4, 4);
byte = _tio_csize(tio); byte = _tio_csize(tio);
@@ -838,7 +839,7 @@ ttynvt_ioctl(fuse_req_t req, int cmd, void *arg,
telnet_rfc2217_ctl(tty->tn, TNS_CTL_NOFLOW); telnet_rfc2217_ctl(tty->tn, TNS_CTL_NOFLOW);
} }
if (!(tty->cmcr & TIOCM_DTR) && _tio_baud(tio) != 0) if (!(tty->cmcr & TIOCM_DTR) && baud != 0)
{ {
tty->cmcr |= TIOCM_DTR; tty->cmcr |= TIOCM_DTR;
telnet_rfc2217_ctl(tty->tn, TNS_CTL_DTR_ON); telnet_rfc2217_ctl(tty->tn, TNS_CTL_DTR_ON);