From: Akihiro Sagawa Subject: oleaut32: Fix parse error when converting non-ascii string to VT_DATE. Message-Id: <20170516235803.751F.375B48EC@gmail.com> Date: Wed, 17 May 2017 00:00:07 +0900 This fixes Bug 43026. If isalpha() argument is neither representable as an unsinged char nor the value of EOF macro, the behavior is undefined. [C89 4.3] Signed-off-by: Akihiro Sagawa --- dlls/oleaut32/tests/vartype.c | 7 +++++++ dlls/oleaut32/vartype.c | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/dlls/oleaut32/tests/vartype.c b/dlls/oleaut32/tests/vartype.c index ff495bd..0f39043 100644 --- a/dlls/oleaut32/tests/vartype.c +++ b/dlls/oleaut32/tests/vartype.c @@ -3410,6 +3410,8 @@ static void test_VarDateFromStr(void) SYSTEMTIME st; OLECHAR buff[128]; size_t i; + OLECHAR with_ideographic_spaceW[] = { '6','/','3','0','/','2','0','1','1',0x3000, + '1',':','2','0',':','3','4',0 }; lcid = MAKELCID(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US),SORT_DEFAULT); @@ -3533,6 +3535,11 @@ static void test_VarDateFromStr(void) DFS("6/30/2011 01:20:34 PM"); EXPECT_DBL(40724.55594907407); /* Native fails "1999 January 3, 9AM". I consider that a bug in native */ + /* test a data with ideographic space */ + out = 0.0; + hres = pVarDateFromStr(with_ideographic_spaceW, lcid, LOCALE_NOUSEROVERRIDE, &out); + EXPECT_DBL(40724.05594907407); + /* test a non-english data string */ DFS("02.01.1970"); EXPECT_MISMATCH; DFS("02.01.1970 00:00:00"); EXPECT_MISMATCH; diff --git a/dlls/oleaut32/vartype.c b/dlls/oleaut32/vartype.c index 2151fc9..aab4d33 100644 --- a/dlls/oleaut32/vartype.c +++ b/dlls/oleaut32/vartype.c @@ -7676,7 +7676,7 @@ HRESULT WINAPI VarDateFromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, DATE* pd dp.dwCount++; strIn--; } - else if (isalpha(*strIn)) + else if (isalphaW(*strIn)) { BOOL bFound = FALSE;