--- sourceforge.net/trunk/rdesktop/pstcache.c 2004/07/12 21:07:39 738 +++ sourceforge.net/trunk/rdesktop/pstcache.c 2004/12/25 13:37:08 808 @@ -22,7 +22,7 @@ #define MAX_CELL_SIZE 0x1000 /* pixels */ -#define IS_PERSISTENT(id) (g_pstcache_fd[id] > 0) +#define IS_PERSISTENT(id) (id < 8 && g_pstcache_fd[id] > 0) extern int g_server_bpp; extern uint32 g_stamp; @@ -42,7 +42,7 @@ { int fd; - if (!IS_PERSISTENT(cache_id)) + if (!IS_PERSISTENT(cache_id) || cache_idx >= BMPCACHE2_NUM_PSTCELLS) return; fd = g_pstcache_fd[cache_id]; @@ -59,7 +59,10 @@ CELLHEADER cellhdr; HBITMAP bitmap; - if (!(g_bitmap_cache_persist_enable && IS_PERSISTENT(cache_id))) + if (!g_bitmap_cache_persist_enable) + return False; + + if (!IS_PERSISTENT(cache_id) || cache_idx >= BMPCACHE2_NUM_PSTCELLS) return False; fd = g_pstcache_fd[cache_id]; @@ -85,7 +88,7 @@ int fd; CELLHEADER cellhdr; - if (!IS_PERSISTENT(cache_id)) + if (!IS_PERSISTENT(cache_id) || cache_idx >= BMPCACHE2_NUM_PSTCELLS) return False; memcpy(cellhdr.bitmap_id, bitmap_id, sizeof(BITMAP_ID));