Module: wine Branch: master Commit: a8c6fda50170b4557a9dd66331b0e0ead344c56b URL: http://source.winehq.org/git/wine.git/?a=commit;h=a8c6fda50170b4557a9dd66331...
Author: Piotr Caban piotr@codeweavers.com Date: Thu Jul 28 12:28:38 2011 +0200
msvcrt: Fix uninitialized memory access in wcsrtombs_l implementation (valgrind).
---
dlls/msvcrt/wcs.c | 13 ++++++++----- 1 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c index bb720e7..04d3ee2 100644 --- a/dlls/msvcrt/wcs.c +++ b/dlls/msvcrt/wcs.c @@ -313,7 +313,6 @@ static MSVCRT_size_t CDECL MSVCRT_wcsrtombs_l(char *mbstr, const MSVCRT_wchar_t MSVCRT_size_t count, MSVCRT__locale_t locale) { MSVCRT_pthreadlocinfo locinfo; - char default_char = '\0'; MSVCRT_size_t tmp = 0; BOOL used_default;
@@ -322,16 +321,20 @@ static MSVCRT_size_t CDECL MSVCRT_wcsrtombs_l(char *mbstr, const MSVCRT_wchar_t else locinfo = locale->locinfo;
- if(!mbstr) - return WideCharToMultiByte(locinfo->lc_codepage, WC_NO_BEST_FIT_CHARS, - *wcstr, -1, NULL, 0, &default_char, &used_default)-1; + if(!mbstr) { + tmp = WideCharToMultiByte(locinfo->lc_codepage, WC_NO_BEST_FIT_CHARS, + *wcstr, -1, NULL, 0, NULL, &used_default)-1; + if(used_default) + return -1; + return tmp; + }
while(**wcstr) { char buf[3]; MSVCRT_size_t i, size;
size = WideCharToMultiByte(locinfo->lc_codepage, WC_NO_BEST_FIT_CHARS, - *wcstr, 1, buf, 3, &default_char, &used_default); + *wcstr, 1, buf, 3, NULL, &used_default); if(used_default) return -1; if(tmp+size > count)