Christian Faure : kernel32: Fix a crash in GetStringTypeW() on NULL input string.
Module: wine Branch: master Commit: 9cffed782fd447445d4de21394815bf944e507f1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=9cffed782fd447445d4de21394... Author: Christian Faure <christian.faurebouvard(a)gmail.com> Date: Sat May 16 16:52:18 2015 +0300 kernel32: Fix a crash in GetStringTypeW() on NULL input string. --- dlls/kernel32/locale.c | 6 ++++++ dlls/kernel32/tests/locale.c | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c index bcdcdba..bf4ace5 100644 --- a/dlls/kernel32/locale.c +++ b/dlls/kernel32/locale.c @@ -2732,6 +2732,12 @@ BOOL WINAPI GetStringTypeW( DWORD type, LPCWSTR src, INT count, LPWORD chartype C2_OTHERNEUTRAL /* LRE, LRO, RLE, RLO, PDF */ }; + if (!src) + { + SetLastError( ERROR_INVALID_PARAMETER ); + return FALSE; + } + if (count == -1) count = strlenW(src) + 1; switch(type) { diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c index e2ec152..9920dfc 100644 --- a/dlls/kernel32/tests/locale.c +++ b/dlls/kernel32/tests/locale.c @@ -3582,9 +3582,26 @@ static void test_GetStringTypeW(void) static const WCHAR space_special[] = {0x09, 0x0d, 0x85}; WORD types[20]; + BOOL ret; WCHAR ch; int i; + /* NULL src */ + SetLastError(0xdeadbeef); + ret = GetStringTypeW(CT_CTYPE1, NULL, 0, NULL); + ok(!ret, "got %d\n", ret); + ok(GetLastError() == ERROR_INVALID_PARAMETER, "got error %d\n", GetLastError()); + + SetLastError(0xdeadbeef); + ret = GetStringTypeW(CT_CTYPE1, NULL, 0, types); + ok(!ret, "got %d\n", ret); + ok(GetLastError() == ERROR_INVALID_PARAMETER, "got error %d\n", GetLastError()); + + SetLastError(0xdeadbeef); + ret = GetStringTypeW(CT_CTYPE1, NULL, 5, types); + ok(!ret, "got %d\n", ret); + ok(GetLastError() == ERROR_INVALID_PARAMETER, "got error %d\n", GetLastError()); + memset(types,0,sizeof(types)); GetStringTypeW(CT_CTYPE1, blanks, 5, types); for (i = 0; i < 5; i++)
participants (1)
-
Alexandre Julliard