Huw Davies : user32: Pad lfFaceName so we don' t write uninitialised data to the registry.
Module: wine Branch: master Commit: 6fc823430043b559dc014deace6e1472a2b80d92 URL: http://source.winehq.org/git/wine.git/?a=commit;h=6fc823430043b559dc014deace... Author: Huw Davies <huw(a)codeweavers.com> Date: Fri Dec 4 14:28:04 2009 +0000 user32: Pad lfFaceName so we don't write uninitialised data to the registry. Found by Valgrind. --- dlls/user32/sysparams.c | 16 +++++++++++++--- 1 files changed, 13 insertions(+), 3 deletions(-) diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c index 4092221..5113acb 100644 --- a/dlls/user32/sysparams.c +++ b/dlls/user32/sysparams.c @@ -699,10 +699,20 @@ static BOOL SYSPARAMS_Save( LPCWSTR lpRegKey, LPCWSTR lpValName, LPCWSTR lpValue /* Convenience function to save logical fonts */ static BOOL SYSPARAMS_SaveLogFont( LPCWSTR lpRegKey, LPCWSTR lpValName, - LPLOGFONTW plf, UINT fWinIni ) + const LPLOGFONTW plf, UINT fWinIni ) { - return SYSPARAMS_SaveRaw( lpRegKey, lpValName, (const BYTE*)plf, - sizeof( LOGFONTW), REG_BINARY, fWinIni ); + LOGFONTW lf = *plf; + int len; + + /* Zero pad the end of lfFaceName so we don't write uninitialised + data to the registry */ + lf.lfFaceName[LF_FACESIZE-1] = 0; + len = strlenW(lf.lfFaceName); + if(len < LF_FACESIZE-1) + memset(lf.lfFaceName + len, 0, (LF_FACESIZE - 1 - len) * sizeof(WCHAR)); + + return SYSPARAMS_SaveRaw( lpRegKey, lpValName, (const BYTE*)&lf, + sizeof(LOGFONTW), REG_BINARY, fWinIni ); }
participants (1)
-
Alexandre Julliard