diff --git a/dll/win32/mciavi32/mmoutput.c b/dll/win32/mciavi32/mmoutput.c index ee0481c59c7..ca060574e01 100644 --- a/dll/win32/mciavi32/mmoutput.c +++ b/dll/win32/mciavi32/mmoutput.c @@ -398,6 +398,13 @@ BOOL MCIAVI_GetInfo(WINE_MCIAVI* wma) mmioAscend(wma->hFile, &mmckInfo, 0); } + + /* Empty file */ + if (alb.numVideoFrames == 0) { + WARN("NumVideoFrames: %u, Empty or possibly corrupt video file"); + return FALSE; + } + if (alb.numVideoFrames != wma->dwPlayableVideoFrames) { WARN("AVI header says %d frames, we found %d video frames, reducing playable frames\n", wma->dwPlayableVideoFrames, alb.numVideoFrames); @@ -613,6 +620,11 @@ double MCIAVI_PaintFrame(WINE_MCIAVI* wma, HDC hDC) if (wma->dwCurrVideoFrame != wma->dwCachedFrame) { + if (wma->dwCurrVideoFrame >= wma->dwPlayableVideoFrames) { + ERR("Invalid frame requested. Current : %u Total Playable %u\n", wma->dwCurrVideoFrame, wma->dwPlayableVideoFrames); + return 0; + } + if (!wma->lpVideoIndex[wma->dwCurrVideoFrame].dwOffset) return 0;