Module: wine Branch: master Commit: 9711cdbcabfce9910196f75451f0ada977d3560d URL: http://source.winehq.org/git/wine.git/?a=commit;h=9711cdbcabfce9910196f75451...
Author: Dmitry Timoshkov dmitry@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;