Christian Faure : kernel32: Fix a crash in GetStringTypeW() on NULL input string.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon May 18 07:57:33 CDT 2015
Module: wine
Branch: master
Commit: 9cffed782fd447445d4de21394815bf944e507f1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=9cffed782fd447445d4de21394815bf944e507f1
Author: Christian Faure <christian.faurebouvard at 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++)
More information about the wine-cvs
mailing list