From ba9b16aafa39882c9a5b127489b89349f08e8b2f Mon Sep 17 00:00:00 2001 From: Keegan McAllister Date: Mon, 26 Mar 2012 23:48:48 -0400 Subject: [PATCH] Fully initialize the argument to TIOCSWINSZ struct winsize contains fields other than ws_col and ws_row. To avoid passing uninitialized data to TIOCSWINSZ, initialize it first using TIOCGWINSZ. Found by Valgrind. (closes #85 github issue) --- src/frontend/mosh-server.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/frontend/mosh-server.cc b/src/frontend/mosh-server.cc index 8b47ed9..d7988c5 100644 --- a/src/frontend/mosh-server.cc +++ b/src/frontend/mosh-server.cc @@ -433,6 +433,10 @@ void serve( int host_fd, Terminal::Complete &terminal, ServerConnection &network /* tell child process of resize */ const Parser::Resize *res = static_cast( us.get_action( i ) ); struct winsize window_size; + if ( ioctl( host_fd, TIOCGWINSZ, &window_size ) < 0 ) { + perror( "ioctl TIOCGWINSZ" ); + return; + } window_size.ws_col = res->width; window_size.ws_row = res->height; if ( ioctl( host_fd, TIOCSWINSZ, &window_size ) < 0 ) {