From e7d2b00e0da2ad673678835c9a6b29abd948debc Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 20 Dec 2023 11:58:35 +0100 Subject: [PATCH 1/2] ptyfwd: reset colors when we exit the pty forwarding logic Just in case there was still a color set, make sure to reset things. --- src/shared/ptyfwd.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/shared/ptyfwd.c b/src/shared/ptyfwd.c index 4950932a96..d01d1b1094 100644 --- a/src/shared/ptyfwd.c +++ b/src/shared/ptyfwd.c @@ -19,6 +19,7 @@ #include "alloc-util.h" #include "errno-util.h" #include "fd-util.h" +#include "io-util.h" #include "log.h" #include "macro.h" #include "ptyfwd.h" @@ -96,6 +97,10 @@ static void pty_forward_disconnect(PTYForward *f) { /* STDIN/STDOUT should not be non-blocking normally, so let's reset it */ (void) fd_nonblock(f->output_fd, false); + + if (colors_enabled()) + (void) loop_write(f->output_fd, ANSI_NORMAL ANSI_ERASE_TO_END_OF_LINE, SIZE_MAX); + if (f->close_output_fd) f->output_fd = safe_close(f->output_fd); } From 518c4f048807263f32e09166aef655e21815b01a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 20 Dec 2023 11:59:52 +0100 Subject: [PATCH 2/2] ptyfwd: make sure pty_forward_free() follows our usual semantics regarding NULL --- src/shared/ptyfwd.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/shared/ptyfwd.c b/src/shared/ptyfwd.c index d01d1b1094..1a92d7ec26 100644 --- a/src/shared/ptyfwd.c +++ b/src/shared/ptyfwd.c @@ -552,6 +552,8 @@ int pty_forward_new( } PTYForward *pty_forward_free(PTYForward *f) { + if (!f) + return NULL; pty_forward_disconnect(f); return mfree(f); }