Bruno Jesus : kernel32: GetTempPathW must zero the remaining buffer.
Module: wine Branch: master Commit: f16cf541068831074a6891688d947f0ce32abdd9 URL: http://source.winehq.org/git/wine.git/?a=commit;h=f16cf541068831074a6891688d... Author: Bruno Jesus <00cpxxx(a)gmail.com> Date: Sat Feb 28 20:11:08 2015 -0300 kernel32: GetTempPathW must zero the remaining buffer. --- dlls/kernel32/path.c | 6 +++++- dlls/kernel32/tests/path.c | 1 - 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/dlls/kernel32/path.c b/dlls/kernel32/path.c index 475b1f6..1048214 100644 --- a/dlls/kernel32/path.c +++ b/dlls/kernel32/path.c @@ -623,9 +623,13 @@ DWORD WINAPI GetTempPathW( DWORD count, LPWSTR path ) if (count) { - lstrcpynW(path, tmp_path, count); + lstrcpynW(path, tmp_path, ret); if (count >= ret) + { + /* the remaining buffer must be zeroed */ + memset(path + ret, 0, (count - ret) * sizeof(WCHAR)); ret--; /* return length without 0 */ + } else if (count < 4) path[0] = 0; /* avoid returning ambiguous "X:" */ } diff --git a/dlls/kernel32/tests/path.c b/dlls/kernel32/tests/path.c index 8b07b8f..a5c0f41 100644 --- a/dlls/kernel32/tests/path.c +++ b/dlls/kernel32/tests/path.c @@ -1012,7 +1012,6 @@ static void test_GetTempPathW(char* tmp_dir) ok(len == lstrlenW(buf), "returned length should be equal to the length of string\n"); /* The rest of the buffer must be zeroed */ for(len++; len < sizeof(buf) / sizeof(buf[0]); len++) - todo_wine ok(buf[len] == '\0', "expected NULL at [%d], got 0x%x\n", len, buf[len]); }
participants (1)
-
Alexandre Julliard