Author: fireball
Date: Thu Jun 12 04:50:12 2008
New Revision: 33947
URL:
http://svn.reactos.org/svn/reactos?rev=33947&view=rev
Log:
- Fix a bug in timedate.cpl, where an incorrect color was passed.
- Add bounds checking for GetSystemMetrics both in user32 and in kernel counterpart.
- Based on a patch from bug 3316.
See issue #3316 for more details.
Modified:
trunk/reactos/dll/cpl/timedate/monthcal.c
trunk/reactos/dll/win32/user32/misc/desktop.c
trunk/reactos/subsystems/win32/win32k/ntuser/metric.c
Modified: trunk/reactos/dll/cpl/timedate/monthcal.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/timedate/monthcal.…
==============================================================================
--- trunk/reactos/dll/cpl/timedate/monthcal.c [iso-8859-1] (original)
+++ trunk/reactos/dll/cpl/timedate/monthcal.c [iso-8859-1] Thu Jun 12 04:50:12 2008
@@ -504,7 +504,7 @@
if (crOldCtrlText == CLR_INVALID)
{
crOldCtrlText = SetTextColor(hDC,
- infoPtr->Enabled ? MONTHCAL_CTRLFG :
MONTHCAL_DISABLED_CTRLFG);
+ GetSysColor(infoPtr->Enabled ?
MONTHCAL_CTRLFG : MONTHCAL_DISABLED_CTRLFG));
}
for (x = prcUpdate->left / infoPtr->CellSize.cx;
Modified: trunk/reactos/dll/win32/user32/misc/desktop.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/misc/desk…
==============================================================================
--- trunk/reactos/dll/win32/user32/misc/desktop.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/user32/misc/desktop.c [iso-8859-1] Thu Jun 12 04:50:12 2008
@@ -100,9 +100,11 @@
GetSystemMetrics(int nIndex)
{
// FIXME("Global Sever Data -> %x\n",g_psi);
- if (g_psi) return g_psi->SystemMetrics[nIndex];
+ if (nIndex < 0 || nIndex >= SM_CMETRICS) return 0;
+ if (g_psi)
+ return g_psi->SystemMetrics[nIndex];
else
- return(NtUserGetSystemMetrics(nIndex));
+ return(NtUserGetSystemMetrics(nIndex));
}
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/metric.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/metric.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/metric.c [iso-8859-1] Thu Jun 12 04:50:12
2008
@@ -278,6 +278,13 @@
ULONG Width, Height, Result;
// DPRINT1("UserGetSystemMetrics -> %d\n",Index);
+
+ if (Index >= SM_CMETRICS)
+ {
+ DPRINT1("UserGetSystemMetrics() called with invalid index %d\n", Index);
+ return 0;
+ }
+
if (gpsi && Setup)
return gpsi->SystemMetrics[Index];
else