Fix potentially incorrect speed check
We don't know if tio is termios or termios2.
This commit is contained in:
+5
-4
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user