avformat/cache: Use int64_t to avoid int overflow in cache_read

Fixes an issue where an int64_t ffurl_seek return-value was being stored
in an int (32-bit) "r" variable, leading to integer overflow when seeking
into a large file (>2GB), and ultimately a "Failed to perform internal
seek" error mesage.

To test, try running `ffprobe 'cache:http://<something>'` on a file that
is ~3GB large, whose moov atom is at the end of the file

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
pull/159/head
Bryan Huh 9 years ago committed by Michael Niedermayer
parent 6df2c94130
commit d917f25658
  1. 2
      libavformat/cache.c

@ -156,7 +156,7 @@ static int cache_read(URLContext *h, unsigned char *buf, int size)
{
Context *c= h->priv_data;
CacheEntry *entry, *next[2] = {NULL, NULL};
int r;
int64_t r;
entry = av_tree_find(c->root, &c->logical_pos, cmp, (void**)next);

Loading…
Cancel
Save