From 09df948871d740f8f9071d4246f856b04e2d4772 Mon Sep 17 00:00:00 2001 From: XANTRONIX Development Date: Thu, 30 Jul 2020 01:34:43 -0400 Subject: [PATCH] Only set use tcsetattr() on TTYs for KISS TNCs Fix patty_kiss_tnc_new_fd() to only attempt tcgetattr()/tcsetattr() on file descriptors for whom isatty() is true, allowing files and sockets to once again be used --- src/kiss.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/kiss.c b/src/kiss.c index 61cf3cf..a3945bb 100644 --- a/src/kiss.c +++ b/src/kiss.c @@ -52,16 +52,18 @@ patty_kiss_tnc *patty_kiss_tnc_new_fd(int fd) { goto error_malloc_buf; } - if (tcgetattr(fd, &tnc->attrs) < 0) { - goto error_tcgetattr; - } + if (isatty(fd)) { + if (tcgetattr(fd, &tnc->attrs) < 0) { + goto error_tcgetattr; + } - memcpy(&tnc->attrs_old, &tnc->attrs, sizeof(tnc->attrs_old)); + memcpy(&tnc->attrs_old, &tnc->attrs, sizeof(tnc->attrs_old)); - cfmakeraw(&tnc->attrs); + cfmakeraw(&tnc->attrs); - if (tcsetattr(fd, TCSANOW, &tnc->attrs) < 0) { - goto error_tcsetattr; + if (tcsetattr(fd, TCSANOW, &tnc->attrs) < 0) { + goto error_tcsetattr; + } } tnc->fd = fd;