From 71a2c9b26567e2294b54eedafeb23aee08563de7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reimar=20D=C3=B6ffinger?= Date: Tue, 17 Jan 2012 00:10:17 +0100 Subject: [PATCH] ffmpeg: check tcgetattr result. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes parallel FATE (make fate -j4) failing under valgrind with: Syscall param ioctl(TCSET{S,SW,SF}) points to uninitialised byte(s) at 0x5D98B23: tcsetattr (tcsetattr.c:88) by 0x43D66C: term_init (ffmpeg.c:734) by 0x43CD8D: main (ffmpeg.c:5071) Address 0x7fefffdd0 is on thread 1's stack Uninitialised value was created by a stack allocation at 0x43D5B0: term_init (ffmpeg.c:716) Signed-off-by: Reimar Döffinger --- ffmpeg.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ffmpeg.c b/ffmpeg.c index 4ae194e5e8..b9297df6f4 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -298,6 +298,7 @@ typedef struct OutputStream { /* init terminal so that we can grab keys */ static struct termios oldtty; +static int restore_tty; #endif typedef struct OutputFile { @@ -696,7 +697,7 @@ static void term_exit(void) { av_log(NULL, AV_LOG_QUIET, "%s", ""); #if HAVE_TERMIOS_H - if(!run_as_daemon) + if(restore_tty) tcsetattr (0, TCSANOW, &oldtty); #endif } @@ -718,8 +719,9 @@ static void term_init(void) if(!run_as_daemon){ struct termios tty; - tcgetattr (0, &tty); + if (tcgetattr (0, &tty) == 0) { oldtty = tty; + restore_tty = 1; atexit(term_exit); tty.c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP @@ -732,6 +734,7 @@ static void term_init(void) tty.c_cc[VTIME] = 0; tcsetattr (0, TCSANOW, &tty); + } signal(SIGQUIT, sigterm_handler); /* Quit (POSIX). */ } #endif