diff options
author | Reimar Döffinger <Reimar.Doeffinger@gmx.de> | 2012-01-17 00:10:17 +0100 |
---|---|---|
committer | Reimar Döffinger <Reimar.Doeffinger@gmx.de> | 2012-01-17 20:16:50 +0100 |
commit | 71a2c9b26567e2294b54eedafeb23aee08563de7 (patch) | |
tree | facf244349fe50e190fb5f3f038e3244f76b1cef /ffmpeg.c | |
parent | 3b55429d5692dd782d8b3ce6a19819305157d1b8 (diff) | |
download | ffmpeg-71a2c9b26567e2294b54eedafeb23aee08563de7.tar.gz |
ffmpeg: check tcgetattr result.
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 <Reimar.Doeffinger@gmx.de>
Diffstat (limited to 'ffmpeg.c')
-rw-r--r-- | ffmpeg.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -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 |