Make sure to check for invalid NULL handles before passing them to GDIOBJ_bLockMultipleObjects, which skips NULL handles. This is a design limitation, since otherwise we either need to pass a bitfield of valid handles, or duplicate  code in certain functions, where different combinations of dest, source and mask dc are allowed.

svn path=/trunk/; revision=63442
This commit is contained in:
Timo Kreuzer 2014-05-25 12:59:17 +00:00
parent aaedf937d2
commit f01e92424a

View file

@ -47,6 +47,12 @@ NtGdiAlphaBlend(
return FALSE;
}
if ((hDCDest == NULL) || (hDCSrc == NULL))
{
EngSetLastError(ERROR_INVALID_PARAMETER);
return FALSE;
}
TRACE("Locking DCs\n");
ahDC[0] = hDCDest;
ahDC[1] = hDCSrc ;
@ -161,14 +167,14 @@ NtGdiBitBlt(
return NtGdiStretchBlt(hDCDest,
XDest,
YDest,
Width,
Width,
Height,
hDCSrc,
XSrc,
YSrc,
Width,
Height,
ROP,
ROP,
crBackColor);
dwTRop = ROP & ~(NOMIRRORBITMAP|CAPTUREBLT);
@ -213,6 +219,12 @@ NtGdiTransparentBlt(
BOOL Ret = FALSE;
EXLATEOBJ exlo;
if ((hdcDst == NULL) || (hdcSrc == NULL))
{
EngSetLastError(ERROR_INVALID_PARAMETER);
return FALSE;
}
TRACE("Locking DCs\n");
ahDC[0] = hdcDst;
ahDC[1] = hdcSrc ;