]> git.ipfire.org Git - thirdparty/lxc.git/commit
fix console stdin,stdout,stderr fds
authorDwight Engen <dwight.engen@oracle.com>
Wed, 5 Mar 2014 20:48:39 +0000 (15:48 -0500)
committerStéphane Graber <stgraber@ubuntu.com>
Wed, 5 Mar 2014 20:58:58 +0000 (15:58 -0500)
commit1da0ad1e0adff18c6d588772146eb054440db95b
tree843bf0eaa1413b70ca18d7edfeb54a5f0b0e9bdb
parentde269ee8dec1cf2d882de385f8dd6591e97121e2
fix console stdin,stdout,stderr fds

The fds for stdin,stdout,stderr that we were leaving open for /sbin/init
in the container were those from /dev/tty or lxc.console (if given), which
wasn't right. Inside the container it should only have access to the pty
that lxc creates representing the console.

This was noticed because busybox's init was resetting the termio on its
stdin which was effecting the actual users terminal instead of the pty.
This meant it was setting icanon so were were not passing keystrokes
immediately to the pty, and hence command line history/editing wasn't
working.

Fix by dup'ing the console pty to stdin,stdout,stderr just before
exec()ing /sbin/init. Fix fd leak in error handling that I noticed while
going through this code.

Also tested with lxc.console = none, lxc.console = /dev/tty7 and no
lxc.console specified.

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
src/lxc/console.c
src/lxc/console.h
src/lxc/lxc_console.c
src/lxc/lxc_start.c
src/lxc/start.c