[x264-devel] parse_qpfile: Check ftell() and fseek() return values
Henrik Gramner
git at videolan.org
Tue Apr 12 20:36:14 CEST 2016
x264 | branch: master | Henrik Gramner <henrik at gramner.com> | Fri Feb 5 18:46:02 2016 +0100| [de7af9185e172122cd9b800845e1988a52ad7cc3] | committer: Henrik Gramner
parse_qpfile: Check ftell() and fseek() return values
> http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=de7af9185e172122cd9b800845e1988a52ad7cc3
---
x264.c | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/x264.c b/x264.c
index 8413c7c..18a3e36 100644
--- a/x264.c
+++ b/x264.c
@@ -1741,19 +1741,23 @@ generic_option:
static void parse_qpfile( cli_opt_t *opt, x264_picture_t *pic, int i_frame )
{
- int num = -1, qp, ret;
+ int num = -1;
char type;
- uint64_t file_pos;
while( num < i_frame )
{
- file_pos = ftell( opt->qpfile );
- qp = -1;
- ret = fscanf( opt->qpfile, "%d %c%*[ \t]%d\n", &num, &type, &qp );
+ int64_t file_pos = ftell( opt->qpfile );
+ int qp = -1;
+ int ret = fscanf( opt->qpfile, "%d %c%*[ \t]%d\n", &num, &type, &qp );
pic->i_type = X264_TYPE_AUTO;
pic->i_qpplus1 = X264_QP_AUTO;
if( num > i_frame || ret == EOF )
{
- fseek( opt->qpfile, file_pos, SEEK_SET );
+ if( file_pos < 0 || fseek( opt->qpfile, file_pos, SEEK_SET ) )
+ {
+ x264_cli_log( "x264", X264_LOG_ERROR, "qpfile seeking failed\n" );
+ fclose( opt->qpfile );
+ opt->qpfile = NULL;
+ }
break;
}
if( num < i_frame && ret >= 2 )
More information about the x264-devel
mailing list