From 837b6d245da9281082ed9e62e7b7f7b74a37e7f5 Mon Sep 17 00:00:00 2001 From: reimar Date: Tue, 3 Aug 2010 16:01:40 +0000 Subject: 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 --- stream/cache2.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'stream/cache2.c') 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; } -- cgit v1.2.3