From f917cd0e42642aefc8924379f4dacacb6563bc24 Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Sat, 7 Jul 2012 11:52:24 +0200 Subject: [PATCH] user.exe: Avoid truncating strcmp result (Coverity). --- dlls/user.exe16/user.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/dlls/user.exe16/user.c b/dlls/user.exe16/user.c index 705620b6ee0..7f184a2166d 100644 --- a/dlls/user.exe16/user.c +++ b/dlls/user.exe16/user.c @@ -2557,7 +2557,14 @@ INT16 WINAPIV wsprintf16( LPSTR buffer, LPCSTR spec, VA_LIST16 valist ) */ INT16 WINAPI lstrcmp16( LPCSTR str1, LPCSTR str2 ) { - return strcmp( str1, str2 ); + int ret; + /* Looks too complicated, but in optimized strcpy we might get + * a 32bit wide difference and would truncate it to 16 bit, so + * erroneously returning equality. */ + ret = strcmp( str1, str2 ); + if (ret < 0) return -1; + if (ret > 0) return 1; + return 0; }