Permalink
Browse files

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)
  • Loading branch information...
1 parent 9a7f3ad commit ba9b16aafa39882c9a5b127489b89349f08e8b2f @kmcallister committed with keithw Mar 27, 2012
Showing with 4 additions and 0 deletions.
  1. +4 −0 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<const Parser::Resize *>( 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 ) {

0 comments on commit ba9b16a

Please sign in to comment.