summaryrefslogtreecommitdiff
path: root/libavformat/cache.c
diff options
context:
space:
mode:
authorBryan Huh <bryan@box.com>2015-11-02 10:20:39 -0800
committerMichael Niedermayer <michael@niedermayer.cc>2015-11-04 03:59:17 +0100
commitd917f25658c47b617420aa7a389cc354d6580ee4 (patch)
tree1f040f986210b93fd3629ff1b5d8ad468864d802 /libavformat/cache.c
parent6df2c94130b026930d1f7148699925dcaa08759c (diff)
downloadffmpeg-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>
Diffstat (limited to 'libavformat/cache.c')
-rw-r--r--libavformat/cache.c2
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);