avformat/http: Return an error in case of prematurely ending data
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 28 Mar 2015 23:33:35 +0000 (00:33 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 19 Apr 2015 11:01:48 +0000 (13:01 +0200)
Fixes Ticket 4039

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

index bbe5de5..dca1213 100644 (file)
@@ -943,6 +943,14 @@ static int http_buf_read(URLContext *h, uint8_t *buf, int size)
             s->filesize >= 0 && s->off >= s->filesize)
             return AVERROR_EOF;
         len = ffurl_read(s->hd, buf, size);
+        if (!len && (!s->willclose || s->chunksize < 0) &&
+            s->filesize >= 0 && s->off < s->filesize) {
+            av_log(h, AV_LOG_ERROR,
+                   "Streams ends prematurly at %"PRId64", should be %"PRId64"\n",
+                   s->off, s->filesize
+                  );
+            return AVERROR(EIO);
+        }
     }
     if (len > 0) {
         s->off += len;