comparison libvo/vo_directx.c @ 32481:983577adcf0e

Fix possible out-of-bounds access.
author reimar
date Sat, 30 Oct 2010 15:29:20 +0000
parents fbe5c829c69b
children 8fa2f43cb760
comparison
equal deleted inserted replaced
32480:60453d752380 32481:983577adcf0e
227 static uint32_t Directx_CreateOverlay(uint32_t imgfmt) 227 static uint32_t Directx_CreateOverlay(uint32_t imgfmt)
228 { 228 {
229 HRESULT ddrval; 229 HRESULT ddrval;
230 DDSURFACEDESC2 ddsdOverlay; 230 DDSURFACEDESC2 ddsdOverlay;
231 uint32_t i=0; 231 uint32_t i=0;
232 while ( i < NUM_FORMATS +1 && imgfmt != g_ddpf[i].img_format) 232 while ( i < NUM_FORMATS && imgfmt != g_ddpf[i].img_format)
233 { 233 {
234 i++; 234 i++;
235 } 235 }
236 if (!g_lpdd || !g_lpddsPrimary) 236 if (!g_lpdd || !g_lpddsPrimary || i == NUM_FORMATS)
237 return 1; 237 return 1;
238 //cleanup 238 //cleanup
239 if (g_lpddsOverlay)g_lpddsOverlay->lpVtbl->Release(g_lpddsOverlay); 239 if (g_lpddsOverlay)g_lpddsOverlay->lpVtbl->Release(g_lpddsOverlay);
240 if (g_lpddsBack)g_lpddsBack->lpVtbl->Release(g_lpddsBack); 240 if (g_lpddsBack)g_lpddsBack->lpVtbl->Release(g_lpddsBack);
241 g_lpddsOverlay= NULL; 241 g_lpddsOverlay= NULL;