mirror of
https://github.com/reactos/reactos.git
synced 2025-05-30 06:28:34 +00:00
[WIN32K]
- Add missed checks of size - Initialize cbSize field of structures * Fixes 6 tests for win32knt_apitest:NtUserSystemParametersInfo svn path=/trunk/; revision=72626
This commit is contained in:
parent
895906f45d
commit
9434ff082b
1 changed files with 157 additions and 3 deletions
|
@ -304,6 +304,14 @@ SpiUpdatePerUserSystemParameters(VOID)
|
||||||
gspv.bScrSaverSecure = FALSE;
|
gspv.bScrSaverSecure = FALSE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
gspv.accesstimeout.cbSize = sizeof(ACCESSTIMEOUT);
|
||||||
|
gspv.filterkeys.cbSize = sizeof(FILTERKEYS);
|
||||||
|
gspv.togglekeys.cbSize = sizeof(TOGGLEKEYS);
|
||||||
|
gspv.mousekeys.cbSize = sizeof(MOUSEKEYS);
|
||||||
|
gspv.stickykeys.cbSize = sizeof(STICKYKEYS);
|
||||||
|
gspv.serialkeys.cbSize = sizeof(SERIALKEYS);
|
||||||
|
gspv.soundsentry.cbSize = sizeof(SOUNDSENTRY);
|
||||||
|
|
||||||
/* Make sure we don't use broken values */
|
/* Make sure we don't use broken values */
|
||||||
SpiFixupValues();
|
SpiFixupValues();
|
||||||
|
|
||||||
|
@ -438,7 +446,7 @@ SpiMemCopy(PVOID pvDst, PVOID pvSrc, ULONG cbSize, BOOL bProtect, BOOL bToUser)
|
||||||
{
|
{
|
||||||
Status = _SEH2_GetExceptionCode();
|
Status = _SEH2_GetExceptionCode();
|
||||||
}
|
}
|
||||||
_SEH2_END
|
_SEH2_END;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -894,7 +902,7 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
|
||||||
|
|
||||||
case SPI_SETFASTTASKSWITCH:
|
case SPI_SETFASTTASKSWITCH:
|
||||||
/* According to Winetest this one is unimplemented */
|
/* According to Winetest this one is unimplemented */
|
||||||
return 0;
|
return 1;
|
||||||
|
|
||||||
case SPI_GETDRAGFULLWINDOWS:
|
case SPI_GETDRAGFULLWINDOWS:
|
||||||
return SpiGetInt(pvParam, &gspv.bDragFullWindows, fl);
|
return SpiGetInt(pvParam, &gspv.bDragFullWindows, fl);
|
||||||
|
@ -1011,9 +1019,28 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SPI_GETFILTERKEYS:
|
case SPI_GETFILTERKEYS:
|
||||||
|
{
|
||||||
|
LPFILTERKEYS FilterKeys = (LPFILTERKEYS)pvParam;
|
||||||
|
|
||||||
|
if (uiParam != 0 && uiParam != sizeof(FILTERKEYS))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!FilterKeys || FilterKeys->cbSize != sizeof(FILTERKEYS))
|
||||||
|
return 0;
|
||||||
|
|
||||||
return SpiGet(pvParam, &gspv.filterkeys, sizeof(FILTERKEYS), fl);
|
return SpiGet(pvParam, &gspv.filterkeys, sizeof(FILTERKEYS), fl);
|
||||||
|
}
|
||||||
|
|
||||||
case SPI_SETFILTERKEYS:
|
case SPI_SETFILTERKEYS:
|
||||||
|
{
|
||||||
|
LPFILTERKEYS FilterKeys = (LPFILTERKEYS)pvParam;
|
||||||
|
|
||||||
|
if (uiParam != 0 && uiParam != sizeof(FILTERKEYS))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!FilterKeys || FilterKeys->cbSize != sizeof(FILTERKEYS))
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (!SpiSet(&gspv.filterkeys, pvParam, sizeof(FILTERKEYS), fl))
|
if (!SpiSet(&gspv.filterkeys, pvParam, sizeof(FILTERKEYS), fl))
|
||||||
return 0;
|
return 0;
|
||||||
if (fl & SPIF_UPDATEINIFILE)
|
if (fl & SPIF_UPDATEINIFILE)
|
||||||
|
@ -1021,30 +1048,73 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
|
||||||
// FIXME: What to do?
|
// FIXME: What to do?
|
||||||
}
|
}
|
||||||
return (UINT_PTR)KEY_DESKTOP;
|
return (UINT_PTR)KEY_DESKTOP;
|
||||||
|
}
|
||||||
|
|
||||||
case SPI_GETTOGGLEKEYS:
|
case SPI_GETTOGGLEKEYS:
|
||||||
|
{
|
||||||
|
LPTOGGLEKEYS ToggleKeys = (LPTOGGLEKEYS)pvParam;
|
||||||
|
|
||||||
|
if (uiParam != 0 && uiParam != sizeof(TOGGLEKEYS))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!ToggleKeys || ToggleKeys->cbSize != sizeof(TOGGLEKEYS))
|
||||||
|
return 0;
|
||||||
|
|
||||||
return SpiGet(pvParam, &gspv.togglekeys, sizeof(TOGGLEKEYS), fl);
|
return SpiGet(pvParam, &gspv.togglekeys, sizeof(TOGGLEKEYS), fl);
|
||||||
|
}
|
||||||
|
|
||||||
case SPI_SETTOGGLEKEYS:
|
case SPI_SETTOGGLEKEYS:
|
||||||
|
{
|
||||||
|
LPTOGGLEKEYS ToggleKeys = (LPTOGGLEKEYS)pvParam;
|
||||||
|
|
||||||
|
if (uiParam != 0 && uiParam != sizeof(TOGGLEKEYS))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!ToggleKeys || ToggleKeys->cbSize != sizeof(TOGGLEKEYS))
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (!SpiSet(&gspv.togglekeys, pvParam, sizeof(TOGGLEKEYS), fl))
|
if (!SpiSet(&gspv.togglekeys, pvParam, sizeof(TOGGLEKEYS), fl))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (fl & SPIF_UPDATEINIFILE)
|
if (fl & SPIF_UPDATEINIFILE)
|
||||||
{
|
{
|
||||||
// FIXME: What to do?
|
// FIXME: What to do?
|
||||||
}
|
}
|
||||||
return (UINT_PTR)KEY_DESKTOP;
|
return (UINT_PTR)KEY_DESKTOP;
|
||||||
|
}
|
||||||
|
|
||||||
case SPI_GETMOUSEKEYS:
|
case SPI_GETMOUSEKEYS:
|
||||||
|
{
|
||||||
|
LPMOUSEKEYS MouseKeys = (LPMOUSEKEYS)pvParam;
|
||||||
|
|
||||||
|
if (uiParam != 0 && uiParam != sizeof(MOUSEKEYS))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!MouseKeys || MouseKeys->cbSize != sizeof(MOUSEKEYS))
|
||||||
|
return 0;
|
||||||
|
|
||||||
return SpiGet(pvParam, &gspv.mousekeys, sizeof(MOUSEKEYS), fl);
|
return SpiGet(pvParam, &gspv.mousekeys, sizeof(MOUSEKEYS), fl);
|
||||||
|
}
|
||||||
|
|
||||||
case SPI_SETMOUSEKEYS:
|
case SPI_SETMOUSEKEYS:
|
||||||
|
{
|
||||||
|
LPMOUSEKEYS MouseKeys = (LPMOUSEKEYS)pvParam;
|
||||||
|
|
||||||
|
if (uiParam != 0 && uiParam != sizeof(MOUSEKEYS))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!MouseKeys || MouseKeys->cbSize != sizeof(MOUSEKEYS))
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (!SpiSet(&gspv.mousekeys, pvParam, sizeof(MOUSEKEYS), fl))
|
if (!SpiSet(&gspv.mousekeys, pvParam, sizeof(MOUSEKEYS), fl))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (fl & SPIF_UPDATEINIFILE)
|
if (fl & SPIF_UPDATEINIFILE)
|
||||||
{
|
{
|
||||||
// FIXME: What to do?
|
// FIXME: What to do?
|
||||||
}
|
}
|
||||||
return (UINT_PTR)KEY_DESKTOP;
|
return (UINT_PTR)KEY_DESKTOP;
|
||||||
|
}
|
||||||
|
|
||||||
case SPI_GETSHOWSOUNDS:
|
case SPI_GETSHOWSOUNDS:
|
||||||
return SpiGetInt(pvParam, &gspv.bShowSounds, fl);
|
return SpiGetInt(pvParam, &gspv.bShowSounds, fl);
|
||||||
|
@ -1053,56 +1123,140 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl)
|
||||||
return SpiSetBool(&gspv.bShowSounds, uiParam, KEY_SHOWSNDS, VAL_ON, fl);
|
return SpiSetBool(&gspv.bShowSounds, uiParam, KEY_SHOWSNDS, VAL_ON, fl);
|
||||||
|
|
||||||
case SPI_GETSTICKYKEYS:
|
case SPI_GETSTICKYKEYS:
|
||||||
|
{
|
||||||
|
LPSTICKYKEYS StickyKeys = (LPSTICKYKEYS)pvParam;
|
||||||
|
|
||||||
if (uiParam != 0 && uiParam != sizeof(STICKYKEYS))
|
if (uiParam != 0 && uiParam != sizeof(STICKYKEYS))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
if (!StickyKeys || StickyKeys->cbSize != sizeof(STICKYKEYS))
|
||||||
|
return 0;
|
||||||
|
|
||||||
return SpiGetEx(pvParam, &gspv.stickykeys, sizeof(STICKYKEYS), fl);
|
return SpiGetEx(pvParam, &gspv.stickykeys, sizeof(STICKYKEYS), fl);
|
||||||
|
}
|
||||||
|
|
||||||
case SPI_SETSTICKYKEYS:
|
case SPI_SETSTICKYKEYS:
|
||||||
|
{
|
||||||
|
LPSTICKYKEYS StickyKeys = (LPSTICKYKEYS)pvParam;
|
||||||
|
|
||||||
|
if (uiParam != 0 && uiParam != sizeof(STICKYKEYS))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!StickyKeys || StickyKeys->cbSize != sizeof(STICKYKEYS))
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (!SpiSet(&gspv.stickykeys, pvParam, sizeof(STICKYKEYS), fl))
|
if (!SpiSet(&gspv.stickykeys, pvParam, sizeof(STICKYKEYS), fl))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (fl & SPIF_UPDATEINIFILE)
|
if (fl & SPIF_UPDATEINIFILE)
|
||||||
{
|
{
|
||||||
// FIXME: What to do?
|
// FIXME: What to do?
|
||||||
}
|
}
|
||||||
return (UINT_PTR)KEY_DESKTOP;
|
return (UINT_PTR)KEY_DESKTOP;
|
||||||
|
}
|
||||||
|
|
||||||
case SPI_GETACCESSTIMEOUT:
|
case SPI_GETACCESSTIMEOUT:
|
||||||
|
{
|
||||||
|
LPACCESSTIMEOUT AccessTimeout = (LPACCESSTIMEOUT)pvParam;
|
||||||
|
|
||||||
if (uiParam != 0 && uiParam != sizeof(ACCESSTIMEOUT))
|
if (uiParam != 0 && uiParam != sizeof(ACCESSTIMEOUT))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
if (!AccessTimeout || AccessTimeout->cbSize != sizeof(ACCESSTIMEOUT))
|
||||||
|
return 0;
|
||||||
|
|
||||||
return SpiGetEx(pvParam, &gspv.accesstimeout, sizeof(ACCESSTIMEOUT), fl);
|
return SpiGetEx(pvParam, &gspv.accesstimeout, sizeof(ACCESSTIMEOUT), fl);
|
||||||
|
}
|
||||||
|
|
||||||
case SPI_SETACCESSTIMEOUT:
|
case SPI_SETACCESSTIMEOUT:
|
||||||
|
{
|
||||||
|
LPACCESSTIMEOUT AccessTimeout = (LPACCESSTIMEOUT)pvParam;
|
||||||
|
|
||||||
|
if (uiParam != 0 && uiParam != sizeof(ACCESSTIMEOUT))
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!AccessTimeout || AccessTimeout->cbSize != sizeof(ACCESSTIMEOUT))
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (!SpiSet(&gspv.accesstimeout, pvParam, sizeof(ACCESSTIMEOUT), fl))
|
if (!SpiSet(&gspv.accesstimeout, pvParam, sizeof(ACCESSTIMEOUT), fl))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (fl & SPIF_UPDATEINIFILE)
|
if (fl & SPIF_UPDATEINIFILE)
|
||||||
{
|
{
|
||||||
// FIXME: What to do?
|
// FIXME: What to do?
|
||||||
}
|
}
|
||||||
return (UINT_PTR)KEY_DESKTOP;
|
return (UINT_PTR)KEY_DESKTOP;
|
||||||
|
}
|
||||||
|
|
||||||
case SPI_GETSERIALKEYS:
|
case SPI_GETSERIALKEYS:
|
||||||
|
{
|
||||||
|
LPSERIALKEYS SerialKeys = (LPSERIALKEYS)pvParam;
|
||||||
|
|
||||||
|
if (uiParam != 0 && uiParam != sizeof(SERIALKEYS))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!SerialKeys || SerialKeys->cbSize != sizeof(SERIALKEYS))
|
||||||
|
return 0;
|
||||||
|
|
||||||
return SpiGet(pvParam, &gspv.serialkeys, sizeof(SERIALKEYS), fl);
|
return SpiGet(pvParam, &gspv.serialkeys, sizeof(SERIALKEYS), fl);
|
||||||
|
}
|
||||||
|
|
||||||
case SPI_SETSERIALKEYS:
|
case SPI_SETSERIALKEYS:
|
||||||
|
{
|
||||||
|
LPSERIALKEYS SerialKeys = (LPSERIALKEYS)pvParam;
|
||||||
|
|
||||||
|
if (uiParam != 0 && uiParam != sizeof(SERIALKEYS))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!SerialKeys || SerialKeys->cbSize != sizeof(SERIALKEYS))
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (!SpiSet(&gspv.serialkeys, pvParam, sizeof(SERIALKEYS), fl))
|
if (!SpiSet(&gspv.serialkeys, pvParam, sizeof(SERIALKEYS), fl))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (fl & SPIF_UPDATEINIFILE)
|
if (fl & SPIF_UPDATEINIFILE)
|
||||||
{
|
{
|
||||||
// FIXME: What to do?
|
// FIXME: What to do?
|
||||||
}
|
}
|
||||||
return (UINT_PTR)KEY_DESKTOP;
|
return (UINT_PTR)KEY_DESKTOP;
|
||||||
|
}
|
||||||
|
|
||||||
case SPI_GETSOUNDSENTRY:
|
case SPI_GETSOUNDSENTRY:
|
||||||
|
{
|
||||||
|
LPSOUNDSENTRY SoundsEntry = (LPSOUNDSENTRY)pvParam;
|
||||||
|
|
||||||
|
if (uiParam != 0 && uiParam != sizeof(SOUNDSENTRY))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!SoundsEntry || SoundsEntry->cbSize != sizeof(SOUNDSENTRY))
|
||||||
|
return 0;
|
||||||
|
|
||||||
return SpiGet(pvParam, &gspv.soundsentry, sizeof(SOUNDSENTRY), fl);
|
return SpiGet(pvParam, &gspv.soundsentry, sizeof(SOUNDSENTRY), fl);
|
||||||
|
}
|
||||||
|
|
||||||
case SPI_SETSOUNDSENTRY:
|
case SPI_SETSOUNDSENTRY:
|
||||||
|
{
|
||||||
|
LPSOUNDSENTRY SoundsEntry = (LPSOUNDSENTRY)pvParam;
|
||||||
|
|
||||||
|
if (uiParam != 0 && uiParam != sizeof(SOUNDSENTRY))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!SoundsEntry || SoundsEntry->cbSize != sizeof(SOUNDSENTRY))
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (!SpiSet(&gspv.soundsentry, pvParam, sizeof(SOUNDSENTRY), fl))
|
if (!SpiSet(&gspv.soundsentry, pvParam, sizeof(SOUNDSENTRY), fl))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (fl & SPIF_UPDATEINIFILE)
|
if (fl & SPIF_UPDATEINIFILE)
|
||||||
{
|
{
|
||||||
// FIXME: What to do?
|
// FIXME: What to do?
|
||||||
}
|
}
|
||||||
return (UINT_PTR)KEY_DESKTOP;
|
return (UINT_PTR)KEY_DESKTOP;
|
||||||
|
}
|
||||||
|
|
||||||
case SPI_GETHIGHCONTRAST:
|
case SPI_GETHIGHCONTRAST:
|
||||||
return SpiGet(pvParam, &gspv.highcontrast, sizeof(HIGHCONTRAST), fl);
|
return SpiGet(pvParam, &gspv.highcontrast, sizeof(HIGHCONTRAST), fl);
|
||||||
|
|
Loading…
Reference in a new issue