ffmpeg: avoid scanf in keyboard command parsing

Mixing stdio and low-level IO on stdin is not safe.
This commit is contained in:
Hendrik Leppkes 2015-08-03 22:02:17 +02:00
parent 3c8652208b
commit 2ab5002e3c
1 changed files with 10 additions and 2 deletions

View File

@ -3428,9 +3428,17 @@ static int check_keyboard_interaction(int64_t cur_time)
if(!debug) debug = 1;
while(debug & (FF_DEBUG_DCT_COEFF|FF_DEBUG_VIS_QP|FF_DEBUG_VIS_MB_TYPE)) //unsupported, would just crash
debug += debug;
}else
if(scanf("%d", &debug)!=1)
}else{
char buf[32];
int k = 0;
i = 0;
while ((k = read_key()) != '\n' && k != '\r' && i < sizeof(buf)-1)
if (k > 0)
buf[i++] = k;
buf[i] = 0;
if (k <= 0 || sscanf(buf, "%d", &debug)!=1)
fprintf(stderr,"error parsing debug value\n");
}
for(i=0;i<nb_input_streams;i++) {
input_streams[i]->st->codec->debug = debug;
}