Piotr Caban : msvcrt: Fix uninitialized memory access in wcsrtombs_l implementation (valgrind).

Alexandre Julliard julliard at winehq.org
Thu Jul 28 13:55:45 CDT 2011


Module: wine
Branch: master
Commit: a8c6fda50170b4557a9dd66331b0e0ead344c56b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=a8c6fda50170b4557a9dd66331b0e0ead344c56b

Author: Piotr Caban <piotr at 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)




More information about the wine-cvs mailing list