diff options
author | Bryan Huh <bryan@box.com> | 2015-11-02 10:20:39 -0800 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2015-11-04 03:59:17 +0100 |
commit | d917f25658c47b617420aa7a389cc354d6580ee4 (patch) | |
tree | 1f040f986210b93fd3629ff1b5d8ad468864d802 | |
parent | 6df2c94130b026930d1f7148699925dcaa08759c (diff) | |
download | ffmpeg-d917f25658c47b617420aa7a389cc354d6580ee4.tar.gz |
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>
-rw-r--r-- | libavformat/cache.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libavformat/cache.c b/libavformat/cache.c index a762aa9ca5..31f63e6b18 100644 --- a/libavformat/cache.c +++ b/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); |