user32: Respect the requested size of NONCLIENTMETRICSW structure.
Dmitry Timoshkov
dmitry at baikal.ru
Tue Oct 11 00:10:17 CDT 2011
This patch should fix the regression reported in the bug 28642.
---
dlls/user32/sysparams.c | 14 ++++++++++++--
1 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c
index afa15a2..3c7da43 100644
--- a/dlls/user32/sysparams.c
+++ b/dlls/user32/sysparams.c
@@ -1582,11 +1582,21 @@ BOOL WINAPI SystemParametersInfoW( UINT uiAction, UINT uiParam,
{
LPNONCLIENTMETRICSW lpnm = pvParam;
+ if (!lpnm)
+ {
+ ret = FALSE;
+ break;
+ }
+
if (!spi_loaded[SPI_NONCLIENTMETRICS_IDX]) load_nonclient_metrics();
- if (lpnm && (lpnm->cbSize == sizeof(NONCLIENTMETRICSW) ||
- lpnm->cbSize == FIELD_OFFSET(NONCLIENTMETRICSW, iPaddedBorderWidth)))
+ if (lpnm->cbSize == sizeof(NONCLIENTMETRICSW))
*lpnm = nonclient_metrics;
+ else if (lpnm->cbSize == FIELD_OFFSET(NONCLIENTMETRICSW, iPaddedBorderWidth))
+ {
+ memcpy(lpnm, &nonclient_metrics, FIELD_OFFSET(NONCLIENTMETRICSW, iPaddedBorderWidth));
+ lpnm->cbSize = FIELD_OFFSET(NONCLIENTMETRICSW, iPaddedBorderWidth);
+ }
else
ret = FALSE;
break;
--
1.7.5.1
More information about the wine-patches
mailing list