avformat/utils/av_probe_input_buffer2: fix offset check
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 13 Jan 2014 21:17:12 +0000 (22:17 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 13 Jan 2014 21:23:40 +0000 (22:23 +0100)
The check could fail if avio_read() read less than requested

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/utils.c

index b7a569c..e880650 100644 (file)
@@ -372,9 +372,6 @@ int av_probe_input_buffer2(AVIOContext *pb, AVInputFormat **fmt,
     for(probe_size= PROBE_BUF_MIN; probe_size<=max_probe_size && !*fmt;
         probe_size = FFMIN(probe_size<<1, FFMAX(max_probe_size, probe_size+1))) {
 
-        if (probe_size < offset) {
-            continue;
-        }
         score = probe_size < max_probe_size ? AVPROBE_SCORE_RETRY : 0;
 
         /* read probe data */
@@ -390,6 +387,8 @@ int av_probe_input_buffer2(AVIOContext *pb, AVInputFormat **fmt,
             ret = 0;            /* error was end of file, nothing read */
         }
         buf_offset += ret;
+        if (buf_offset < offset)
+            continue;
         pd.buf_size = buf_offset - offset;
         pd.buf = &buf[offset];