https://git.reactos.org/?p=reactos.git;a=commitdiff;h=581757d8618c828c0ebbad479f10a625226c7e5c

commit 581757d8618c828c0ebbad479f10a625226c7e5c
Author:     Katayama Hirofumi MZ <[email protected]>
AuthorDate: Fri Dec 10 12:24:41 2021 +0900
Commit:     Katayama Hirofumi MZ <[email protected]>
CommitDate: Fri Dec 10 12:24:41 2021 +0900

    [KERNEL32_APITEST] Improve MultiByteToWideChar testcase
    
    - Fix WinXP and ReactOS cases.
    
    CORE-13349
    
    NOTE: We use Win10's MultiByteToWideChar behaviour due to security reason.
---
 dll/win32/kernel32/winnls/string/nls.c             |  4 +-
 .../apitests/kernel32/MultiByteToWideChar.c        | 66 +++++++++++-----------
 2 files changed, 36 insertions(+), 34 deletions(-)

diff --git a/dll/win32/kernel32/winnls/string/nls.c 
b/dll/win32/kernel32/winnls/string/nls.c
index 7264fa73cae..a1bad1b2271 100644
--- a/dll/win32/kernel32/winnls/string/nls.c
+++ b/dll/win32/kernel32/winnls/string/nls.c
@@ -356,9 +356,10 @@ IntGetCodePageEntry(UINT CodePage)
  *
  * Internal version of MultiByteToWideChar for UTF8.
  *
+ * @note We use Win10's behaviour due to security reason.
+ *
  * @see MultiByteToWideChar
  */
-
 static
 INT
 WINAPI
@@ -1633,7 +1634,6 @@ static INT Utf7ToWideChar(const char *src, int srclen, 
WCHAR *dst, int dstlen)
  *
  * @implemented
  */
-
 INT
 WINAPI
 MultiByteToWideChar(UINT CodePage,
diff --git a/modules/rostests/apitests/kernel32/MultiByteToWideChar.c 
b/modules/rostests/apitests/kernel32/MultiByteToWideChar.c
index d0dbf864110..71fbd68d92a 100644
--- a/modules/rostests/apitests/kernel32/MultiByteToWideChar.c
+++ b/modules/rostests/apitests/kernel32/MultiByteToWideChar.c
@@ -7,12 +7,10 @@
  */
 
 #include "precomp.h"
+#include <versionhelpers.h>
 
 static ULONG OsVersion;
 
-/* NOTE: Tested on Win10. We follow Win10 in this function.
-         Win10 might alter its design in future. */
-
 /* TODO: Russian, French, Korean etc. codepages */
 
 #define CP932   932     /* Japanese Shift_JIS (SJIS) codepage */
@@ -126,7 +124,7 @@ static const ENTRY Entries[] =
     { __LINE__, {0x600,0xA00}, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8, 
MB_ERR_INVALID_CHARS, "\xC0\xC0\x80", 4, 1, {0xFFFD, 0x7F7F}, 2 },
     { __LINE__, {0x000,0x502}, 0, ERROR_NO_UNICODE_TRANSLATION, CP_UTF8, 
MB_ERR_INVALID_CHARS, "\xE0\xC0", 3, 1, {0x7F7F, 0x7F7F}, 2 },
     { __LINE__, {0x600,0xA00}, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8, 
MB_ERR_INVALID_CHARS, "\xE0\xC0", 3, 1, {0xFFFD, 0x7F7F}, 2 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_NO_UNICODE_TRANSLATION, CP_UTF8, 
MB_ERR_INVALID_CHARS, "\xE0\x20\xC0", 4, 1, {0x0020, 0x7F7F}, 2 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_NO_UNICODE_TRANSLATION, CP_UTF8, 
MB_ERR_INVALID_CHARS, "\xE0\x20\xC0", 4, 1, {0x0020, 0x7F7F}, 2 },
     { __LINE__, {0x600,0xA00}, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8, 
MB_ERR_INVALID_CHARS, "\xE0\x20\xC0", 4, 1, {0xFFFD, 0x7F7F}, 2 },
     { __LINE__, {0x000,0x502}, 0, ERROR_NO_UNICODE_TRANSLATION, CP_UTF8, 
MB_ERR_INVALID_CHARS, "\x82\xA0\x82\xA2", -1, 1, {0x7F7F, 0x7F7F}, 2 },
     { __LINE__, {0x600,0xA00}, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8, 
MB_ERR_INVALID_CHARS, "\x82\xA0\x82\xA2", -1, 1, {0xFFFD, 0x7F7F}, 2 },
@@ -142,9 +140,9 @@ static const ENTRY Entries[] =
     { __LINE__, {0x000,0xA00}, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8, 0, 
UTF8_Japanese, sizeof(UTF8_Japanese), 1, {0x65E5, 0x7F7F}, 2 },
     { __LINE__, {0x000,0xA00}, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8, 
MB_ERR_INVALID_CHARS, UTF8_Japanese, sizeof(UTF8_Japanese), 1, {0x65E5, 
0x7F7F}, 2 },
     /* Japanese UTF-8 truncated source */
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, UTF8_Japanese, 1, 
4, {0x7F7F, 0x7F7F}, 2 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, UTF8_Japanese, 1, 
4, {0x7F7F, 0x7F7F}, 2 },
     { __LINE__, {0x600,0xA00}, 1, 0xBEAF, CP_UTF8, 0, UTF8_Japanese, 1, 4, 
{0xFFFD, 0x7F7F}, 2 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_NO_UNICODE_TRANSLATION, CP_UTF8, 
MB_ERR_INVALID_CHARS, UTF8_Japanese, 1, 4, {0x7F7F, 0x7F7F}, 2 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_NO_UNICODE_TRANSLATION, CP_UTF8, 
MB_ERR_INVALID_CHARS, UTF8_Japanese, 1, 4, {0x7F7F, 0x7F7F}, 2 },
     { __LINE__, {0x600,0xA00}, 0, ERROR_NO_UNICODE_TRANSLATION, CP_UTF8, 
MB_ERR_INVALID_CHARS, UTF8_Japanese, 1, 4, {0xFFFD, 0x7F7F}, 2 },
     /* Japanese CP932 without buffer */
     { __LINE__, {0x000,0xA00}, 4, 0xBEAF, CP932, 0, SJIS_Japanese, 
sizeof(SJIS_Japanese) },
@@ -160,66 +158,66 @@ static const ENTRY Entries[] =
     { __LINE__, {0x600,0xA00}, 1, 0xBEAF, CP932, 0, SJIS_Japanese, 1, 4, 
{0x30FB, 0x7F7F}, 2 },
     { __LINE__, {0x000,0xA00}, 0, ERROR_NO_UNICODE_TRANSLATION, CP932, 
MB_ERR_INVALID_CHARS, SJIS_Japanese, 1, 4, {0x7F7F, 0x7F7F}, 2 },
     /* invalid 5-byte UTF-8 sequences */
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xF8\xA3\xA3\xA3\xA3", 1, 8, {0x7F7F, 0x7F7F}, 2 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xF8\xA3\xA3\xA3\xA3", 1, 8, {0x7F7F, 0x7F7F}, 2 },
     { __LINE__, {0x600,0xA00}, 1, 0xBEAF, CP_UTF8, 0, "\xF8\xA3\xA3\xA3\xA3", 
1, 8, {0xFFFD, 0x7F7F}, 2 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xF8\xA3\xA3\xA3\xA3", 2, 8, {0x7F7F, 0x7F7F, 0x7F7F}, 3 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xF8\xA3\xA3\xA3\xA3", 2, 8, {0x7F7F, 0x7F7F, 0x7F7F}, 3 },
     { __LINE__, {0x600,0xA00}, 2, 0xBEAF, CP_UTF8, 0, "\xF8\xA3\xA3\xA3\xA3", 
2, 8, {0xFFFD, 0xFFFD, 0x7F7F}, 3 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xF8\xA3\xA3\xA3\xA3", 3, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 4 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xF8\xA3\xA3\xA3\xA3", 3, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 4 },
     { __LINE__, {0x600,0xA00}, 3, 0xBEAF, CP_UTF8, 0, "\xF8\xA3\xA3\xA3\xA3", 
3, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 4 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xF8\xA3\xA3\xA3\xA3", 4, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 5 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xF8\xA3\xA3\xA3\xA3", 4, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 5 },
     { __LINE__, {0x600,0xA00}, 4, 0xBEAF, CP_UTF8, 0, "\xF8\xA3\xA3\xA3\xA3", 
4, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 5 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xF8\xA3\xA3\xA3\xA3", 5, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 
6 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xF8\xA3\xA3\xA3\xA3", 5, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 
6 },
     { __LINE__, {0x600,0xA00}, 5, 0xBEAF, CP_UTF8, 0, "\xF8\xA3\xA3\xA3\xA3", 
5, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 6 },
     { __LINE__, {0x000,0x502}, 1, 0xBEAF, CP_UTF8, 0, "\xF8\xA3\xA3\xA3\xA3", 
6, 8, {0, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 6 },
     { __LINE__, {0x600,0xA00}, 6, 0xBEAF, CP_UTF8, 0, "\xF8\xA3\xA3\xA3\xA3", 
6, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0}, 6 },
     /* invalid 6-byte UTF-8 sequences */
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFC\xA3\xA3\xA3\xA3\xA3", 1, 8, {0x7F7F, 0x7F7F}, 2 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFC\xA3\xA3\xA3\xA3\xA3", 1, 8, {0x7F7F, 0x7F7F}, 2 },
     { __LINE__, {0x600,0xA00}, 1, 0xBEAF, CP_UTF8, 0, 
"\xFC\xA3\xA3\xA3\xA3\xA3", 1, 8, {0xFFFD, 0x7F7F}, 2 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFC\xA3\xA3\xA3\xA3\xA3", 2, 8, {0x7F7F, 0x7F7F, 0x7F7F}, 3 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFC\xA3\xA3\xA3\xA3\xA3", 2, 8, {0x7F7F, 0x7F7F, 0x7F7F}, 3 },
     { __LINE__, {0x600,0xA00}, 2, 0xBEAF, CP_UTF8, 0, 
"\xFC\xA3\xA3\xA3\xA3\xA3", 2, 8, {0xFFFD, 0xFFFD, 0x7F7F}, 3 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFC\xA3\xA3\xA3\xA3\xA3", 3, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 4 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFC\xA3\xA3\xA3\xA3\xA3", 3, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 4 },
     { __LINE__, {0x600,0xA00}, 3, 0xBEAF, CP_UTF8, 0, 
"\xFC\xA3\xA3\xA3\xA3\xA3", 3, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 4 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFC\xA3\xA3\xA3\xA3\xA3", 4, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 5 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFC\xA3\xA3\xA3\xA3\xA3", 4, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 5 },
     { __LINE__, {0x600,0xA00}, 4, 0xBEAF, CP_UTF8, 0, 
"\xFC\xA3\xA3\xA3\xA3\xA3", 4, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 5 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFC\xA3\xA3\xA3\xA3\xA3", 5, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F}, 6 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFC\xA3\xA3\xA3\xA3\xA3", 5, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F}, 6 },
     { __LINE__, {0x600,0xA00}, 5, 0xBEAF, CP_UTF8, 0, 
"\xFC\xA3\xA3\xA3\xA3\xA3", 5, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 
0x7F7F}, 6 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFC\xA3\xA3\xA3\xA3\xA3", 6, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F, 0x7F7F}, 7 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFC\xA3\xA3\xA3\xA3\xA3", 6, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F, 0x7F7F}, 7 },
     { __LINE__, {0x600,0xA00}, 6, 0xBEAF, CP_UTF8, 0, 
"\xFC\xA3\xA3\xA3\xA3\xA3", 6, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 
0xFFFD, 0x7F7F}, 7 },
     { __LINE__, {0x000,0x502}, 1, 0xBEAF, CP_UTF8, 0, 
"\xFC\xA3\xA3\xA3\xA3\xA3", 7, 8, {0, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F}, 7 },
     { __LINE__, {0x600,0xA00}, 7, 0xBEAF, CP_UTF8, 0, 
"\xFC\xA3\xA3\xA3\xA3\xA3", 7, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 
0xFFFD, 0}, 7 },
     /* invalid 7-byte UTF-8 sequences */
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 1, 8, {0x7F7F, 0x7F7F}, 2 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 1, 8, {0x7F7F, 0x7F7F}, 2 },
     { __LINE__, {0x600,0xA00}, 1, 0xBEAF, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 1, 8, {0xFFFD, 0x7F7F}, 2 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 2, 8, {0x7F7F, 0x7F7F, 0x7F7F}, 3 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 2, 8, {0x7F7F, 0x7F7F, 0x7F7F}, 3 },
     { __LINE__, {0x600,0xA00}, 2, 0xBEAF, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 2, 8, {0xFFFD, 0xFFFD, 0x7F7F}, 3 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 3, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 4 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 3, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 4 },
     { __LINE__, {0x600,0xA00}, 3, 0xBEAF, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 3, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 4 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 4, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 
5 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 4, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 
5 },
     { __LINE__, {0x600,0xA00}, 4, 0xBEAF, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 4, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 
5 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 5, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F}, 6 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 5, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F}, 6 },
     { __LINE__, {0x600,0xA00}, 5, 0xBEAF, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 5, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 
0x7F7F}, 6 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 6, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F, 0x7F7F}, 7 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 6, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F, 0x7F7F}, 7 },
     { __LINE__, {0x600,0xA00}, 6, 0xBEAF, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 6, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 
0xFFFD, 0x7F7F}, 7 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 7, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F, 0x7F7F, 0x7F7F}, 8 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 7, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F, 0x7F7F, 0x7F7F}, 8 },
     { __LINE__, {0x600,0xA00}, 7, 0xBEAF, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 7, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 
0xFFFD, 0xFFFD, 0x7F7F}, 8 },
     { __LINE__, {0x000,0x502}, 1, 0xBEAF, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 8, 8, {0, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F, 0x7F7F, 0x7F7F}, 8 },
     { __LINE__, {0x600,0xA00}, 8, 0xBEAF, CP_UTF8, 0, 
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 8, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 
0xFFFD, 0xFFFD, 0}, 8 },
     /* invalid UTF-8 sequences */
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 1, 8, {0x7F7F, 0x7F7F}, 2 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 1, 8, {0x7F7F, 0x7F7F}, 2 },
     { __LINE__, {0x600,0xA00}, 1, 0xBEAF, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 1, 8, {0xFFFD, 0x7F7F}, 2 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 2, 8, {0x7F7F, 0x7F7F, 0x7F7F}, 3 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 2, 8, {0x7F7F, 0x7F7F, 0x7F7F}, 3 },
     { __LINE__, {0x600,0xA00}, 2, 0xBEAF, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 2, 8, {0xFFFD, 0xFFFD, 0x7F7F}, 3 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 3, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 4 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 3, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 4 },
     { __LINE__, {0x600,0xA00}, 3, 0xBEAF, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 3, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 4 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 4, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F}, 5 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 4, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F}, 5 },
     { __LINE__, {0x600,0xA00}, 4, 0xBEAF, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 4, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 
0x7F7F}, 5 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 5, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F, 0x7F7F}, 6 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 5, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F, 0x7F7F}, 6 },
     { __LINE__, {0x600,0xA00}, 5, 0xBEAF, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 5, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 
0xFFFD, 0x7F7F}, 6 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 6, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F, 0x7F7F, 0x7F7F}, 7 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 6, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F, 0x7F7F, 0x7F7F}, 7 },
     { __LINE__, {0x600,0xA00}, 6, 0xBEAF, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 6, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 
0xFFFD, 0xFFFD, 0x7F7F}, 7 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 7, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 8 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 7, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 8 },
     { __LINE__, {0x600,0xA00}, 7, 0xBEAF, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 7, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 
0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 8 },
-    { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 8, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 9 },
+    { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 8, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 9 },
     { __LINE__, {0x600,0xA00}, 8, 0xBEAF, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 8, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 9 },
     { __LINE__, {0x000,0x502}, 1, 0xBEAF, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 9, 8, {0, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 
0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 9 },
     { __LINE__, {0x600,0xA00}, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8, 0, 
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 9, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 9 },
@@ -308,6 +306,10 @@ START_TEST(MultiByteToWideChar)
 
     OsVersion = (vi.dwMajorVersion << 8) | vi.dwMinorVersion;
 
+    /* NOTE: We use Win10's MultiByteToWideChar behaviour due to security 
reason. */
+    if (IsReactOS())
+        OsVersion = 0xa00;
+
     for (i = 0; i < _countof(Entries); ++i)
     {
         TestEntry(&Entries[i]);

Reply via email to