From: Gregor Schneider Date: Sat, 19 Dec 2009 18:57:27 +0000 (+0000) Subject: [win32k] Add parameter checks for NtGdiSetVirtualResolution X-Git-Tag: backups/aicom-network-stable@46924~253 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=f9d540f20b94e18a195ad7666c8385f451e65d1d [win32k] Add parameter checks for NtGdiSetVirtualResolution svn path=/trunk/; revision=44656 --- diff --git a/reactos/subsystems/win32/win32k/objects/coord.c b/reactos/subsystems/win32/win32k/objects/coord.c index d85238a13f5..e2a70c9c967 100644 --- a/reactos/subsystems/win32/win32k/objects/coord.c +++ b/reactos/subsystems/win32/win32k/objects/coord.c @@ -1024,7 +1024,20 @@ NtGdiSetVirtualResolution( PDC dc; PDC_ATTR pdcattr; - // Need test types for zeros and non zeros + /* Check parameters (all zeroes resets to real resolution) */ + if (cxVirtualDevicePixel == 0 && cyVirtualDevicePixel == 0 && + cxVirtualDeviceMm == 0 && cyVirtualDeviceMm == 0) + { + cxVirtualDevicePixel = NtGdiGetDeviceCaps(hdc, HORZRES); + cyVirtualDevicePixel = NtGdiGetDeviceCaps(hdc, VERTRES); + cxVirtualDeviceMm = NtGdiGetDeviceCaps(hdc, HORZSIZE); + cyVirtualDeviceMm = NtGdiGetDeviceCaps(hdc, VERTSIZE); + } + else if (cxVirtualDevicePixel == 0 || cyVirtualDevicePixel == 0 || + cxVirtualDeviceMm == 0 || cyVirtualDeviceMm == 0) + { + return FALSE; + } dc = DC_LockDc(hdc); if (!dc) return FALSE;