Hans Leidekker : msvcrt: Handle NULL arguments in _mbscmp.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Apr 24 08:48:52 CDT 2015


Module: wine
Branch: master
Commit: bbd0e56a5832b8b6135d9300005747d07ec33cd2
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=bbd0e56a5832b8b6135d9300005747d07ec33cd2

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Fri Apr 24 14:48:04 2015 +0200

msvcrt: Handle NULL arguments in _mbscmp.

---

 dlls/msvcrt/mbcs.c         |  3 +++
 dlls/msvcrt/tests/string.c | 31 +++++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+)

diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c
index 044c2bd..4c85b90 100644
--- a/dlls/msvcrt/mbcs.c
+++ b/dlls/msvcrt/mbcs.c
@@ -24,6 +24,7 @@
  */
 
 #include <stdio.h>
+#include <limits.h>
 
 #include "msvcrt.h"
 #include "wine/unicode.h"
@@ -769,6 +770,8 @@ unsigned char* CDECL _mbsnbcpy(unsigned char* dst, const unsigned char* src, MSV
  */
 int CDECL _mbscmp(const unsigned char* str, const unsigned char* cmp)
 {
+  if (!str || !cmp) return INT_MAX;
+
   if(get_mbcinfo()->ismbcodepage)
   {
     unsigned int strc, cmpc;
diff --git a/dlls/msvcrt/tests/string.c b/dlls/msvcrt/tests/string.c
index cf609f7..3893ba7 100644
--- a/dlls/msvcrt/tests/string.c
+++ b/dlls/msvcrt/tests/string.c
@@ -2874,6 +2874,36 @@ static void test__wcsset_s(void)
     ok(str[2] == 'b', "str[2] = %d\n", str[2]);
 }
 
+static void test__mbscmp(void)
+{
+    static const unsigned char a[] = {'a',0}, b[] = {'b',0};
+    int ret;
+
+    if (!p_mbrlen)
+    {
+        win_skip("_mbscmp tests\n");
+        return;
+    }
+
+    ret = _mbscmp(NULL, NULL);
+    ok(ret == INT_MAX, "got %d\n", ret);
+
+    ret = _mbscmp(a, NULL);
+    ok(ret == INT_MAX, "got %d\n", ret);
+
+    ret = _mbscmp(NULL, a);
+    ok(ret == INT_MAX, "got %d\n", ret);
+
+    ret = _mbscmp(a, a);
+    ok(!ret, "got %d\n", ret);
+
+    ret = _mbscmp(a, b);
+    ok(ret == -1, "got %d\n", ret);
+
+    ret = _mbscmp(b, a);
+    ok(ret == 1, "got %d\n", ret);
+}
+
 START_TEST(string)
 {
     char mem[100];
@@ -2981,4 +3011,5 @@ START_TEST(string)
     test_strxfrm();
     test__strnset_s();
     test__wcsset_s();
+    test__mbscmp();
 }




More information about the wine-cvs mailing list