aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat/avio.c
diff options
context:
space:
mode:
authorRonald S. Bultje <rsbultje@gmail.com>2007-01-30 10:37:52 +0000
committerGuillaume Poirier <gpoirier@mplayerhq.hu>2007-01-30 10:37:52 +0000
commiteabbae730cf732afeb7c2a085e0e5c1e7b1b8614 (patch)
treeeffc296a4e3a2fb1a3374598dfb63e20a8d971f6 /libavformat/avio.c
parent9dd6c804537d98f795986867755e285d1091d072 (diff)
downloadffmpeg-eabbae730cf732afeb7c2a085e0e5c1e7b1b8614.tar.gz
protect the size=seek(SEEK_END,-1)+1 results with an if (.. < 0), else the
return value may still end up being zero (if the seek returns -1, which is e.g. what file.c will return on error), which is a valid (but incorrect) filesize. Patch by Ronald S. Bultje % rbultje A ronald P bitfreak P net % Original thread: date: Jan 2, 2007 2:11 AM subject: [Ffmpeg-devel] Re: [PATCH] file length handling Originally committed as revision 7765 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/avio.c')
-rw-r--r--libavformat/avio.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libavformat/avio.c b/libavformat/avio.c
index 44bc3afeaf..0dd7e63f2a 100644
--- a/libavformat/avio.c
+++ b/libavformat/avio.c
@@ -154,7 +154,9 @@ offset_t url_filesize(URLContext *h)
size= url_seek(h, 0, AVSEEK_SIZE);
if(size<0){
pos = url_seek(h, 0, SEEK_CUR);
- size = url_seek(h, -1, SEEK_END)+1;
+ if ((size = url_seek(h, -1, SEEK_END)) < 0)
+ return size;
+ size++;
url_seek(h, pos, SEEK_SET);
}
return size;