From e310487dae99e774fa31db41add33a114d09de6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Tue, 26 May 2020 18:18:11 +0200 Subject: [PATCH] slave: set IUTF8 --- CHANGELOG.md | 1 + slave.c | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 959c03d0..6707efa1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,7 @@ on the wrap around. * Selection handling when viewport wrapped around. * Restore signal mask in the slave process. +* Set `IUTF8`. ### Security diff --git a/slave.c b/slave.c index 26ccdf6f..30b5c4d9 100644 --- a/slave.c +++ b/slave.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -99,6 +100,19 @@ slave_exec(int ptmx, char *argv[], int err_fd, bool login_shell) goto err; } + { + struct termios flags; + if (tcgetattr(pts, &flags) < 0) { + LOG_ERRNO("failed to get terminal attributes"); + goto err; + } + + flags.c_iflag |= IUTF8; + if (tcsetattr(pts, TCSANOW, &flags) < 0) { + LOG_ERRNO("failed to set IUTF8 terminal attribute"); + goto err; + } + } if (dup2(pts, STDIN_FILENO) == -1 || dup2(pts, STDOUT_FILENO) == -1 ||