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