From 8eab82c7a42f376ef32c0e740596ec767ff2f9f2 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Tue, 9 Feb 2010 18:54:41 +0100 Subject: [PATCH 1/2] s3:smbd: Fix really ugly bool vs. int bug!!! A comparison function for qsort needs to return an 'int'! Otherwise you'll get random results depending on the compiler and the architecture... metze (cherry picked from commit 1686a5e7e7eb1b411b003cbbde5c0d28741c6d02) --- source3/smbd/lanman.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source3/smbd/lanman.c b/source3/smbd/lanman.c index 83f0da4..c34b867 100644 --- a/source3/smbd/lanman.c +++ b/source3/smbd/lanman.c @@ -1351,7 +1351,7 @@ static int fill_srv_info(struct srv_info_struct *service, } -static bool srv_comp(struct srv_info_struct *s1,struct srv_info_struct *s2) +static int srv_comp(struct srv_info_struct *s1,struct srv_info_struct *s2) { #undef strcasecmp return strcasecmp(s1->name,s2->name); @@ -1515,7 +1515,7 @@ static bool api_RNetServerEnum2(connection_struct *conn, uint16 vuid, return True; } -static bool srv_name_match(const char *n1, const char *n2) +static int srv_name_match(const char *n1, const char *n2) { /* * [MS-RAP] footnote <88> for Section 3.2.5.15 says: -- 1.6.3.3 From 188e570a039d1e344c921a7eac6be0543f125b44 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Tue, 9 Feb 2010 18:58:36 +0100 Subject: [PATCH 2/2] s3:smbd: use StrCaseCmp() instead of strcasecmp metze (cherry picked from commit bc8242a08e1bb9489cc8171b1ec02bd2518b1857) --- source3/smbd/lanman.c | 7 +++---- 1 files changed, 3 insertions(+), 4 deletions(-) diff --git a/source3/smbd/lanman.c b/source3/smbd/lanman.c index c34b867..f43049c 100644 --- a/source3/smbd/lanman.c +++ b/source3/smbd/lanman.c @@ -1353,8 +1353,7 @@ static int fill_srv_info(struct srv_info_struct *service, static int srv_comp(struct srv_info_struct *s1,struct srv_info_struct *s2) { -#undef strcasecmp - return strcasecmp(s1->name,s2->name); + return StrCaseCmp(s1->name,s2->name); } /**************************************************************************** @@ -1524,7 +1523,7 @@ static int srv_name_match(const char *n1, const char *n2) * the server will return a list of servers that exist on * the network greater than or equal to the FirstNameToReturn. */ - int ret = strcasecmp(n1, n2); + int ret = StrCaseCmp(n1, n2); if (ret <= 0) { return 0; @@ -1637,7 +1636,7 @@ static bool api_RNetServerEnum3(connection_struct *conn, uint16 vuid, */ for (;first > 0;) { int ret; - ret = strcasecmp(first_name, + ret = StrCaseCmp(first_name, servers[first-1].name); if (ret > 0) { break; -- 1.6.3.3