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;
struct termios2 *tio = &tty->tio;
struct winsize ws;
unsigned int tiocm = 0;
unsigned int tiocm, baud;
int mcr;
int val;
int res;
@@ -805,17 +805,18 @@ ttynvt_ioctl(fuse_req_t req, int cmd, void *arg,
case TCSETS:
CHECK_BUF_IN(sizeof(struct termios));
memcpy(tio, in_buf, in_bufsz);
byte4 = htonl(_tio_baud(tio));
baud = _tio_baud(tio);
goto do_tcset;
case TCSETSF2:
case TCSETSW2:
case TCSETS2:
CHECK_BUF_IN(sizeof(struct termios2));
memcpy(tio, in_buf, in_bufsz);
byte4 = htonl(_tio2_baud(tio));
baud = _tio2_baud(tio);
goto do_tcset;
do_tcset:
/* BEWARE of termios/termios2 buf structure difference! */
byte4 = htonl(baud);
telnet_rfc2217_cfg(tty->tn, TNS_SET_BAUDRATE, &byte4, 4);
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);
}
if (!(tty->cmcr & TIOCM_DTR) && _tio_baud(tio) != 0)
if (!(tty->cmcr & TIOCM_DTR) && baud != 0)
{
tty->cmcr |= TIOCM_DTR;
telnet_rfc2217_ctl(tty->tn, TNS_CTL_DTR_ON);