Module: wine Branch: master Commit: ef95e4a8b9a4e772937514fb2538c145a07aa6c6 URL: https://source.winehq.org/git/wine.git/?a=commit;h=ef95e4a8b9a4e772937514fb2...
Author: Alexandre Julliard julliard@winehq.org Date: Mon Mar 9 20:03:14 2020 +0100
kernelbase: Don't use wcsicmp/wcsnicmp() on the full Unicode character range.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/kernelbase/file.c | 5 ++++- dlls/kernelbase/path.c | 3 ++- dlls/kernelbase/registry.c | 2 +- dlls/kernelbase/string.c | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/dlls/kernelbase/file.c b/dlls/kernelbase/file.c index 6591a11073..79e62716be 100644 --- a/dlls/kernelbase/file.c +++ b/dlls/kernelbase/file.c @@ -30,6 +30,7 @@ #define WIN32_NO_STATUS #include "windef.h" #include "winbase.h" +#include "winnls.h" #include "winternl.h" #include "winioctl.h" #include "wincon.h" @@ -183,7 +184,9 @@ static NTSTATUS find_actctx_dllpath( const WCHAR *name, WCHAR **path ) DWORD dirlen = info->ulAssemblyDirectoryNameLength / sizeof(WCHAR);
p++; - if (!dirlen || wcsnicmp( p, info->lpAssemblyDirectoryName, dirlen ) || wcsicmp( p + dirlen, L".manifest" )) + if (!dirlen || + CompareStringOrdinal( p, dirlen, info->lpAssemblyDirectoryName, dirlen, TRUE ) != CSTR_EQUAL || + wcsicmp( p + dirlen, L".manifest" )) { /* manifest name does not match directory name, so it's not a global * windows/winsxs manifest; use the manifest directory name instead */ diff --git a/dlls/kernelbase/path.c b/dlls/kernelbase/path.c index 0e0c3f3dbd..57102755c6 100644 --- a/dlls/kernelbase/path.c +++ b/dlls/kernelbase/path.c @@ -2713,7 +2713,8 @@ BOOL WINAPI PathUnExpandEnvStringsW(const WCHAR *path, WCHAR *buffer, UINT buf_l while (cur->var) { /* path can't contain expanded value or value wasn't retrieved */ - if (cur->len == 0 || cur->len > pathlen || wcsnicmp(cur->path, path, cur->len)) + if (cur->len == 0 || cur->len > pathlen || + CompareStringOrdinal( cur->path, cur->len, path, cur->len, TRUE ) != CSTR_EQUAL) { cur++; continue; diff --git a/dlls/kernelbase/registry.c b/dlls/kernelbase/registry.c index 4f2234b1ef..e6f3722f70 100644 --- a/dlls/kernelbase/registry.c +++ b/dlls/kernelbase/registry.c @@ -2551,7 +2551,7 @@ static int reg_mui_cache_get(const WCHAR *file_name, UINT index, WCHAR **buffer) LIST_FOR_EACH_ENTRY(ent, ®_mui_cache, struct mui_cache_entry, entry) { if (ent->index == index && ent->locale == GetThreadLocale() && - !wcsicmp(ent->file_name, file_name)) + !lstrcmpiW(ent->file_name, file_name)) goto found; } return 0; diff --git a/dlls/kernelbase/string.c b/dlls/kernelbase/string.c index 75ee5b0512..bd6ff03643 100644 --- a/dlls/kernelbase/string.c +++ b/dlls/kernelbase/string.c @@ -416,7 +416,7 @@ WCHAR * WINAPI StrStrNIW(const WCHAR *str, const WCHAR *search, UINT max_len)
for (i = max_len; *str && (i > 0); i--, str++) { - if (!wcsnicmp(str, search, len)) + if (!StrCmpNIW(str, search, len)) return (WCHAR *)str; }