summaryrefslogtreecommitdiff
path: root/ffmpeg.c
diff options
context:
space:
mode:
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>2012-01-17 00:10:17 +0100
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>2012-01-17 20:16:50 +0100
commit71a2c9b26567e2294b54eedafeb23aee08563de7 (patch)
treefacf244349fe50e190fb5f3f038e3244f76b1cef /ffmpeg.c
parent3b55429d5692dd782d8b3ce6a19819305157d1b8 (diff)
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.c7
1 files 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