Author: tridge
Date: 2004-08-14 05:57:43 +0000 (Sat, 14 Aug 2004)
New Revision: 1820
WebSVN: 
http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_4_0/source&rev=1820&nolog=1
Log:
added a strcmp_safe() that handles NULL pointers. Needed for the
search torture test, as some servers return really bad entries.



Modified:
   branches/SAMBA_4_0/source/lib/util_str.c
   branches/SAMBA_4_0/source/torture/raw/search.c

Changeset:
Modified: branches/SAMBA_4_0/source/lib/util_str.c
===================================================================
--- branches/SAMBA_4_0/source/lib/util_str.c    2004-08-14 05:56:12 UTC (rev 1819)
+++ branches/SAMBA_4_0/source/lib/util_str.c    2004-08-14 05:57:43 UTC (rev 1820)
@@ -1464,3 +1464,18 @@
        return True;
 }
 
+
+
+/*
+  varient of strcmp() that handles NULL ptrs
+*/
+int strcmp_safe(const char *s1, const char *s2)
+{
+       if (s1 == s2) {
+               return 0;
+       }
+       if (s1 == NULL || s2 == NULL) {
+               return s1?-1:1;
+       }
+       return strcmp(s1, s2);
+}

Modified: branches/SAMBA_4_0/source/torture/raw/search.c
===================================================================
--- branches/SAMBA_4_0/source/torture/raw/search.c      2004-08-14 05:56:12 UTC (rev 
1819)
+++ branches/SAMBA_4_0/source/torture/raw/search.c      2004-08-14 05:57:43 UTC (rev 
1820)
@@ -512,27 +512,27 @@
 
 static int search_both_compare(union smb_search_data *d1, union smb_search_data *d2)
 {
-       return strcmp(d1->both_directory_info.name.s, d2->both_directory_info.name.s);
+       return strcmp_safe(d1->both_directory_info.name.s, 
d2->both_directory_info.name.s);
 }
 
 static int search_standard_compare(union smb_search_data *d1, union smb_search_data 
*d2)
 {
-       return strcmp(d1->standard.name.s, d2->standard.name.s);
+       return strcmp_safe(d1->standard.name.s, d2->standard.name.s);
 }
 
 static int search_ea_size_compare(union smb_search_data *d1, union smb_search_data 
*d2)
 {
-       return strcmp(d1->ea_size.name.s, d2->ea_size.name.s);
+       return strcmp_safe(d1->ea_size.name.s, d2->ea_size.name.s);
 }
 
 static int search_directory_info_compare(union smb_search_data *d1, union 
smb_search_data *d2)
 {
-       return strcmp(d1->directory_info.name.s, d2->directory_info.name.s);
+       return strcmp_safe(d1->directory_info.name.s, d2->directory_info.name.s);
 }
 
 static int search_old_compare(union smb_search_data *d1, union smb_search_data *d2)
 {
-       return strcmp(d1->search.name, d2->search.name);
+       return strcmp_safe(d1->search.name, d2->search.name);
 }
 
 

Reply via email to