summaryrefslogtreecommitdiffstats
path: root/stream/cache2.c
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2010-08-03 16:01:40 +0000
committerUoti Urpala <uau@glyph.nonexistent.invalid>2010-11-02 04:15:34 +0200
commit837b6d245da9281082ed9e62e7b7f7b74a37e7f5 (patch)
tree5fe61d19cd6bb5e8b77897b43eb0b8de8d37519b /stream/cache2.c
parent2e6ff523ddb5743eebfacebb162fb4c0e4ee34dc (diff)
downloadmpv-837b6d245da9281082ed9e62e7b7f7b74a37e7f5.tar.bz2
mpv-837b6d245da9281082ed9e62e7b7f7b74a37e7f5.tar.xz
cache: add sanity-check for sector size
Add sanity-check for sector size to avoid strange crashes if it is too large. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31914 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'stream/cache2.c')
-rw-r--r--stream/cache2.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/stream/cache2.c b/stream/cache2.c
index 914f20d601..37d054990a 100644
--- a/stream/cache2.c
+++ b/stream/cache2.c
@@ -497,13 +497,19 @@ static void *ThreadProc( void *s ){
int cache_stream_fill_buffer(stream_t *s){
int len;
+ int sector_size;
if(!s->cache_pid) return stream_fill_buffer(s);
// cache_stats(s->cache_data);
if(s->pos!=((cache_vars_t*)s->cache_data)->read_filepos) mp_msg(MSGT_CACHE,MSGL_ERR,"!!! read_filepos differs!!! report this bug...\n");
+ sector_size = ((cache_vars_t*)s->cache_data)->sector_size;
+ if (sector_size > STREAM_MAX_SECTOR_SIZE) {
+ mp_msg(MSGT_CACHE, MSGL_ERR, "Sector size %i larger than maximum %i\n", sector_size, STREAM_MAX_SECTOR_SIZE);
+ sector_size = STREAM_MAX_SECTOR_SIZE;
+ }
- len=cache_read(s->cache_data,s->buffer, ((cache_vars_t*)s->cache_data)->sector_size);
+ len=cache_read(s->cache_data,s->buffer, sector_size);
//printf("cache_stream_fill_buffer->read -> %d\n",len);
if(len<=0){ s->eof=1; s->buf_pos=s->buf_len=0; return 0; }