Dmitry Timoshkov : user32: Respect the requested size of NONCLIENTMETRICSW structure.
Alexandre Julliard
julliard at winehq.org
Tue Oct 11 14:03:38 CDT 2011
Module: wine
Branch: master
Commit: 9711cdbcabfce9910196f75451f0ada977d3560d
URL: http://source.winehq.org/git/wine.git/?a=commit;h=9711cdbcabfce9910196f75451f0ada977d3560d
Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date: Tue Oct 11 14:10:17 2011 +0900
user32: Respect the requested size of NONCLIENTMETRICSW structure.
---
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;
More information about the wine-cvs
mailing list