From 368e9f39b4151a1094f62defeb308374061e137b Mon Sep 17 00:00:00 2001 From: Daniel Lehman Date: Fri, 17 Aug 2018 18:51:00 +0200 Subject: [PATCH] msvcrt: Don't read past end of string in _strncoll/_wcsncoll. Signed-off-by: Daniel Lehman Signed-off-by: Piotr Caban Signed-off-by: Alexandre Julliard --- dlls/msvcrt/string.c | 4 +++- dlls/msvcrt/wcs.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/dlls/msvcrt/string.c b/dlls/msvcrt/string.c index c8cd390688f..37bc22439d2 100644 --- a/dlls/msvcrt/string.c +++ b/dlls/msvcrt/string.c @@ -666,7 +666,9 @@ int CDECL MSVCRT__strncoll_l( const char* str1, const char* str2, MSVCRT_size_t if(!locinfo->lc_handle[MSVCRT_LC_COLLATE]) return strncmp(str1, str2, count); - return CompareStringA(locinfo->lc_handle[MSVCRT_LC_COLLATE], 0, str1, count, str2, count)-CSTR_EQUAL; + return CompareStringA(locinfo->lc_handle[MSVCRT_LC_COLLATE], 0, + str1, MSVCRT_strnlen(str1, count), + str2, MSVCRT_strnlen(str2, count))-CSTR_EQUAL; } /********************************************************************* diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c index ed73fc6163c..3b22f62275a 100644 --- a/dlls/msvcrt/wcs.c +++ b/dlls/msvcrt/wcs.c @@ -335,7 +335,9 @@ int CDECL MSVCRT__wcsncoll_l(const MSVCRT_wchar_t* str1, const MSVCRT_wchar_t* s if(!locinfo->lc_handle[MSVCRT_LC_COLLATE]) return strncmpW(str1, str2, count); - return CompareStringW(locinfo->lc_handle[MSVCRT_LC_COLLATE], 0, str1, count, str2, count)-CSTR_EQUAL; + return CompareStringW(locinfo->lc_handle[MSVCRT_LC_COLLATE], 0, + str1, MSVCRT_wcsnlen(str1, count), + str2, MSVCRT_wcsnlen(str2, count))-CSTR_EQUAL; } /*********************************************************************