[SCM] Samba Shared Repository - branch master updated - tevent-0-9-8-101-gd5643a0

Steven Danneman sdanneman at samba.org
Tue Sep 8 14:42:35 MDT 2009


The branch, master has been updated
       via  d5643a08e9da1f3df2ef7eeb6eb9a0afbdca36a1 (commit)
       via  a38409ee4cff1c1964cdb0a56bb1f51566e6edc5 (commit)
       via  5975ea793a5d1367ff89e8c69099b8eac69d273d (commit)
       via  11bd19c0071eb0013bedcfc149199a2f1d4063db (commit)
      from  2b16380a0e22cc455f698e59cd94bfd899c989d0 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit d5643a08e9da1f3df2ef7eeb6eb9a0afbdca36a1
Author: Steven Danneman <steven.danneman at isilon.com>
Date:   Tue Sep 8 12:39:39 2009 -0700

    s4/torture/smb2: removed SMB2-FIND test
    
    This test has been wholly replaced by the SMB2-DIR-ONE test found
    in dir.c.

commit a38409ee4cff1c1964cdb0a56bb1f51566e6edc5
Author: Steven Danneman <steven.danneman at isilon.com>
Date:   Tue Sep 8 12:12:01 2009 -0700

    s4/torture/smb2: Fix several small bugs and style issues in SMB2 dir tests
    
    * removed all uses of printf, replaced with torture_comment
    * replaced custom CHECK macros with new torture_assert_*_todo() helpers
    * switched string dir name generation to generate_unique_strs() helper,
      to avoid non-deterministic test behavior where generate_rand_str()
      would cause file colissions in the same directory.

commit 5975ea793a5d1367ff89e8c69099b8eac69d273d
Author: Steven Danneman <steven.danneman at isilon.com>
Date:   Tue Sep 8 12:10:51 2009 -0700

    s4/torture: add new torture_assert_*_todo() macros
    
    These allow torture tests to perform cleanup after a failure, by
    jumping to a goto label.

commit 11bd19c0071eb0013bedcfc149199a2f1d4063db
Author: Steven Danneman <steven.danneman at isilon.com>
Date:   Tue Sep 8 12:09:39 2009 -0700

    lib/util: add unique string generator helper function

-----------------------------------------------------------------------

Summary of changes:
 lib/torture/torture.h          |   38 ++++++
 lib/util/genrand.c             |   59 ++++++++
 lib/util/util.h                |   10 ++
 source4/torture/smb2/config.mk |    1 -
 source4/torture/smb2/dir.c     |  288 +++++++++++++++++++++-------------------
 source4/torture/smb2/find.c    |  220 ------------------------------
 source4/torture/smb2/smb2.c    |    1 -
 7 files changed, 259 insertions(+), 358 deletions(-)
 delete mode 100644 source4/torture/smb2/find.c


Changeset truncated at 500 lines:

diff --git a/lib/torture/torture.h b/lib/torture/torture.h
index e28801e..7f387cc 100644
--- a/lib/torture/torture.h
+++ b/lib/torture/torture.h
@@ -246,6 +246,15 @@ void torture_result(struct torture_context *test,
 	}\
 	} while(0)
 
+#define torture_assert_ntstatus_equal_goto(torture_ctx,got,expected,ret,label,cmt) \
+	do { NTSTATUS __got = got, __expected = expected; \
+	if (!NT_STATUS_EQUAL(__got, __expected)) { \
+		torture_result(torture_ctx, TORTURE_FAIL, __location__": "#got" was %s, expected %s: %s", nt_errstr(__got), nt_errstr(__expected), cmt); \
+		ret = false; \
+		goto label; \
+	}\
+	} while(0)
+
 #define torture_assert_ndr_err_equal(torture_ctx,got,expected,cmt) \
 	do { enum ndr_err_code __got = got, __expected = expected; \
 	if (__got != __expected) { \
@@ -272,6 +281,17 @@ void torture_result(struct torture_context *test,
 	} \
 	} while(0)
 
+#define torture_assert_str_equal_goto(torture_ctx,got,expected,ret,label,cmt)\
+	do { const char *__got = (got), *__expected = (expected); \
+	if (strcmp_safe(__got, __expected) != 0) { \
+		torture_result(torture_ctx, TORTURE_FAIL, \
+					   __location__": "#got" was %s, expected %s: %s", \
+					   __got, __expected, cmt); \
+		ret = false; \
+		goto label; \
+	} \
+	} while(0)
+
 #define torture_assert_mem_equal(torture_ctx,got,expected,len,cmt)\
 	do { const void *__got = (got), *__expected = (expected); \
 	if (memcmp(__got, __expected, len) != 0) { \
@@ -343,6 +363,17 @@ void torture_result(struct torture_context *test,
 	} \
 	} while(0)
 
+#define torture_assert_int_equal_goto(torture_ctx,got,expected,ret,label,cmt)\
+	do { int __got = (got), __expected = (expected); \
+	if (__got != __expected) { \
+		torture_result(torture_ctx, TORTURE_FAIL, \
+			__location__": "#got" was %d, expected %d: %s", \
+			__got, __expected, cmt); \
+		ret = false; \
+		goto label; \
+	} \
+	} while(0)
+
 #define torture_assert_u64_equal(torture_ctx,got,expected,cmt)\
 	do { uint64_t __got = (got), __expected = (expected); \
 	if (__got != __expected) { \
@@ -370,6 +401,10 @@ void torture_result(struct torture_context *test,
 		torture_result(torture_ctx, TORTURE_SKIP, __location__": %s", cmt);\
 		return true; \
 	} while(0)
+#define torture_skip_goto(torture_ctx,label,cmt) do {\
+		torture_result(torture_ctx, TORTURE_SKIP, __location__": %s", cmt);\
+		goto label; \
+	} while(0)
 #define torture_fail(torture_ctx,cmt) do {\
 		torture_result(torture_ctx, TORTURE_FAIL, __location__": %s", cmt);\
 		return false; \
@@ -385,6 +420,9 @@ void torture_result(struct torture_context *test,
 #define torture_assert_ntstatus_ok(torture_ctx,expr,cmt) \
 		torture_assert_ntstatus_equal(torture_ctx,expr,NT_STATUS_OK,cmt)
 
+#define torture_assert_ntstatus_ok_goto(torture_ctx,expr,ret,label,cmt) \
+		torture_assert_ntstatus_equal_goto(torture_ctx,expr,NT_STATUS_OK,ret,label,cmt)
+
 #define torture_assert_werr_ok(torture_ctx,expr,cmt) \
 		torture_assert_werr_equal(torture_ctx,expr,WERR_OK,cmt)
 
diff --git a/lib/util/genrand.c b/lib/util/genrand.c
index 5b84565..1519931 100644
--- a/lib/util/genrand.c
+++ b/lib/util/genrand.c
@@ -360,3 +360,62 @@ again:
 
 	return retstr;
 }
+
+/**
+ * Define our own pow() function to avoid linking in libm
+ */
+static double s_pow(double x, double y)
+{
+	int i;
+	double ret = x;
+
+	if (y == 0)
+		return 1;
+
+	for (i = 1; i < y; i++)
+		ret *= x;
+
+	return ret;
+}
+
+
+/**
+ * Generate an array of unique text strings all of the same length.
+ * The returned string will be allocated.
+ * Returns NULL if the number of unique combinations cannot be created.
+ *
+ * Characters used are: abcdefghijklmnopqrstuvwxyz0123456789+_-#.,
+ */
+_PUBLIC_ char** generate_unique_strs(TALLOC_CTX *mem_ctx, size_t len,
+				     uint32_t num)
+{
+	const char *c_list = "abcdefghijklmnopqrstuvwxyz0123456789+_-#.,";
+	const int c_size = 42;
+	int i, j, rem;
+	long long place;
+	char ** strs = NULL;
+
+	if (num == 0 || len == 0)
+		return NULL;
+
+	/* We'll never return more than UINT32_MAX strings. Since 42^6 is more
+	 * than UINT32_MAX, we only have to check if we've been asked to return
+	 * more than the total number of permutations for lengths less than 6.*/
+	if ((len < 6) && (num > s_pow(c_size, len)))
+		return NULL;
+
+	strs = talloc_array(mem_ctx, char *, num);
+
+	for (i = 0; i < num; i++) {
+		char *retstr = talloc_zero_size(mem_ctx, len + 1);
+		rem = i;
+		for (j = len - 1; j >= 0; j--) {
+			place = s_pow(c_size, j);
+			retstr[j] = c_list[rem / place];
+			rem = rem % place;
+		}
+		strs[i] = retstr;
+	}
+
+	return strs;
+}
diff --git a/lib/util/util.h b/lib/util/util.h
index 20050d2..aa9f91e 100644
--- a/lib/util/util.h
+++ b/lib/util/util.h
@@ -192,6 +192,16 @@ _PUBLIC_ char *generate_random_str_list(TALLOC_CTX *mem_ctx, size_t len, const c
  */
 _PUBLIC_ char *generate_random_str(TALLOC_CTX *mem_ctx, size_t len);
 
+/**
+ * Generate an array of unique text strings all of the same length.
+ * The returned strings will be allocated.
+ * Returns NULL if the number of unique combinations cannot be created.
+ *
+ * Characters used are: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+_-#.,
+ */
+_PUBLIC_ char** generate_unique_strs(TALLOC_CTX *mem_ctx, size_t len,
+                                         uint32_t num);
+
 /* The following definitions come from lib/util/dprintf.c  */
 #if _SAMBA_BUILD_ == 4
 
diff --git a/source4/torture/smb2/config.mk b/source4/torture/smb2/config.mk
index b321b41..2aba86a 100644
--- a/source4/torture/smb2/config.mk
+++ b/source4/torture/smb2/config.mk
@@ -16,7 +16,6 @@ TORTURE_SMB2_OBJ_FILES = $(addprefix $(torturesrcdir)/smb2/, \
 		util.o \
 		getinfo.o \
 		setinfo.o \
-		find.o \
 		lock.o \
 		notify.o \
 		smb2.o \
diff --git a/source4/torture/smb2/dir.c b/source4/torture/smb2/dir.c
index 354085d..3551f97 100644
--- a/source4/torture/smb2/dir.c
+++ b/source4/torture/smb2/dir.c
@@ -35,18 +35,6 @@
 
 #include "system/filesys.h"
 
-#define CHECK_STATUS(status, correct) do { \
-	if (!NT_STATUS_EQUAL(status, correct)) { \
-		torture_result(tctx, TORTURE_FAIL, __location__": \
-		       Incorrect status %s - should be %s", \
-		       nt_errstr(status), nt_errstr(correct)); \
-		ret = false; \
-		goto done; \
-	}} while (0)
-
-#define CHECK_VALUE(v, correct) torture_assert_int_equal(tctx, (v), \
-				(correct), "incorrect value");
-
 #define DNAME	"smb2_dir"
 #define NFILES	100
 
@@ -63,6 +51,7 @@ static NTSTATUS populate_tree(struct torture_context *tctx,
 			      struct smb2_handle *h_out)
 {
 	struct smb2_create create;
+	char **strs = NULL;
 	NTSTATUS status;
 	bool ret;
 	int i;
@@ -80,7 +69,7 @@ static NTSTATUS populate_tree(struct torture_context *tctx,
 	create.in.fname = DNAME;
 
 	status = smb2_create(tree, mem_ctx, &create);
-	CHECK_STATUS(status, NT_STATUS_OK);
+	torture_assert_ntstatus_ok_goto(tctx, status, ret, done, "");
 	*h_out = create.out.file.handle;
 
 	ZERO_STRUCT(create);
@@ -88,12 +77,17 @@ static NTSTATUS populate_tree(struct torture_context *tctx,
 	create.in.file_attributes = FILE_ATTRIBUTE_NORMAL;
 	create.in.create_disposition = NTCREATEX_DISP_CREATE;
 
+	strs = generate_unique_strs(mem_ctx, 8, nfiles);
+	if (strs == NULL) {
+		status = NT_STATUS_OBJECT_NAME_COLLISION;
+		goto done;
+	}
 	for (i = 0; i < nfiles; i++) {
-		files[i].name = generate_random_str(tctx, 8);
+		files[i].name = strs[i];
 		create.in.fname = talloc_asprintf(mem_ctx, "%s\\%s",
 		    DNAME, files[i].name);
 		status = smb2_create(tree, mem_ctx, &create);
-		CHECK_STATUS(status, NT_STATUS_OK);
+		torture_assert_ntstatus_ok_goto(tctx, status, ret, done, "");
 		smb2_util_close(tree, create.out.file.handle);
 	}
  done:
@@ -130,7 +124,7 @@ static bool test_find(struct torture_context *tctx,
 		status = smb2_find_level(tree, tree, &f, &count, &d);
 		if (NT_STATUS_EQUAL(status, STATUS_NO_MORE_FILES))
 			break;
-		CHECK_STATUS(status, NT_STATUS_OK);
+		torture_assert_ntstatus_ok_goto(tctx, status, ret, done, "");
 
 		for (i = 0; i < count; i++) {
 			bool expected;
@@ -163,7 +157,8 @@ static bool test_find(struct torture_context *tctx,
 		f.in.max_response_size	= 4096;
 	} while (count != 0);
 
-	CHECK_VALUE(file_count, NFILES + 2);
+	torture_assert_int_equal_goto(tctx, file_count, NFILES + 2, ret, done,
+				      "");
 
 	for (i = 0; i < NFILES; i++) {
 		if (files[j].found)
@@ -214,7 +209,7 @@ static bool test_fixed(struct torture_context *tctx,
 	create.in.fname = DNAME;
 
 	status = smb2_create(tree, mem_ctx, &create);
-	CHECK_STATUS(status, NT_STATUS_OK);
+	torture_assert_ntstatus_ok_goto(tctx, status, ret, done, "");
 	h2 = create.out.file.handle;
 
 	ZERO_STRUCT(f);
@@ -226,7 +221,7 @@ static bool test_fixed(struct torture_context *tctx,
 
 	/* Start enumeration on h, then delete all from h2 */
 	status = smb2_find_level(tree, tree, &f, &count, &d);
-	CHECK_STATUS(status, NT_STATUS_OK);
+	torture_assert_ntstatus_ok_goto(tctx, status, ret, done, "");
 
 	f.in.file.handle	= h2;
 
@@ -234,7 +229,7 @@ static bool test_fixed(struct torture_context *tctx,
 		status = smb2_find_level(tree, tree, &f, &count, &d);
 		if (NT_STATUS_EQUAL(status, STATUS_NO_MORE_FILES))
 			break;
-		CHECK_STATUS(status, NT_STATUS_OK);
+		torture_assert_ntstatus_ok_goto(tctx, status, ret, done, "");
 
 		for (i = 0; i < count; i++) {
 			const char *found = d[i].both_directory_info.name.s;
@@ -245,7 +240,8 @@ static bool test_fixed(struct torture_context *tctx,
 				continue;
 
 			status = smb2_util_unlink(tree, path);
-			CHECK_STATUS(status, NT_STATUS_OK);
+			torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
+							"");
 
 			talloc_free(path);
 		}
@@ -261,7 +257,7 @@ static bool test_fixed(struct torture_context *tctx,
 		status = smb2_find_level(tree, tree, &f, &count, &d);
 		if (NT_STATUS_EQUAL(status, STATUS_NO_MORE_FILES))
 			break;
-		CHECK_STATUS(status, NT_STATUS_OK);
+		torture_assert_ntstatus_ok_goto(tctx, status, ret, done, "");
 
 		for (i = 0; i < count; i++) {
 			const char *found = d[i].both_directory_info.name.s;
@@ -427,11 +423,11 @@ static bool test_one_file(struct torture_context *tctx,
 	struct smb2_handle h, h2;
 
 	status = torture_smb2_testdir(tree, DNAME, &h);
-	CHECK_STATUS(status, NT_STATUS_OK);
+	torture_assert_ntstatus_ok_goto(tctx, status, ret, done, "");
 
 	status = smb2_create_complex_file(tree, DNAME "\\torture_search.txt",
 					  &h2);
-	CHECK_STATUS(status, NT_STATUS_OK);
+	torture_assert_ntstatus_ok_goto(tctx, status, ret, done, "");
 
 	/* call all the File Information Classes */
 	for (i=0;i<ARRAY_SIZE(levels);i++) {
@@ -441,36 +437,39 @@ static bool test_one_file(struct torture_context *tctx,
 		levels[i].status = torture_single_file_search(tree, mem_ctx,
 				   fname, levels[i].level, levels[i].data_level,
 				   i, &d, &count, &h);
-		CHECK_STATUS(levels[i].status, NT_STATUS_OK);
+		torture_assert_ntstatus_ok_goto(tctx, levels[i].status, ret,
+						done, "");
 	}
 
 	/* get the all_info file into to check against */
 	all_info2.generic.level = RAW_FILEINFO_SMB2_ALL_INFORMATION;
 	all_info2.generic.in.file.handle = h2;
 	status = smb2_getinfo_file(tree, tctx, &all_info2);
-	torture_assert_ntstatus_ok(tctx, status,
-				   "RAW_FILEINFO_ALL_INFO failed");
+	torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
+					"RAW_FILEINFO_ALL_INFO failed");
 
 	alt_info.generic.level = RAW_FILEINFO_ALT_NAME_INFORMATION;
 	alt_info.generic.in.file.handle = h2;
 	status = smb2_getinfo_file(tree, tctx, &alt_info);
-	torture_assert_ntstatus_ok(tctx, status,
-				   "RAW_FILEINFO_ALT_NAME_INFO failed");
+	torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
+					"RAW_FILEINFO_ALT_NAME_INFO failed");
 
 	internal_info.generic.level = RAW_FILEINFO_INTERNAL_INFORMATION;
 	internal_info.generic.in.file.handle = h2;
 	status = smb2_getinfo_file(tree, tctx, &internal_info);
-	torture_assert_ntstatus_ok(tctx, status,
-				   "RAW_FILEINFO_INTERNAL_INFORMATION failed");
+	torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
+					"RAW_FILEINFO_INTERNAL_INFORMATION "
+				        "failed");
 
 #define CHECK_VAL(name, sname1, field1, v, sname2, field2) do { \
 	s = find(name); \
 	if (s) { \
 		if ((s->sname1.field1) != (v.sname2.out.field2)) { \
-			printf("(%s) %s/%s [0x%x] != %s/%s [0x%x]\n", \
-				__location__, \
-				#sname1, #field1, (int)s->sname1.field1, \
-				#sname2, #field2, (int)v.sname2.out.field2); \
+			torture_result(tctx, TORTURE_FAIL, \
+			    "(%s) %s/%s [0x%x] != %s/%s [0x%x]\n", \
+			    __location__, \
+			    #sname1, #field1, (int)s->sname1.field1, \
+			    #sname2, #field2, (int)v.sname2.out.field2); \
 			ret = false; \
 		} \
 	}} while (0)
@@ -480,12 +479,13 @@ static bool test_one_file(struct torture_context *tctx,
 	if (s) { \
 		if (s->sname1.field1 != \
 		    (~1 & nt_time_to_unix(v.sname2.out.field2))) { \
-			printf("(%s) %s/%s [%s] != %s/%s [%s]\n", \
-				__location__, \
-				#sname1, #field1, \
-				timestring(tctx, s->sname1.field1), \
-				#sname2, #field2, \
-				nt_time_string(tctx, v.sname2.out.field2)); \
+			torture_result(tctx, TORTURE_FAIL, \
+			    "(%s) %s/%s [%s] != %s/%s [%s]\n", \
+			    __location__, \
+			    #sname1, #field1, \
+			    timestring(tctx, s->sname1.field1), \
+			    #sname2, #field2, \
+			    nt_time_string(tctx, v.sname2.out.field2)); \
 			ret = false; \
 		} \
 	}} while (0)
@@ -494,12 +494,13 @@ static bool test_one_file(struct torture_context *tctx,
 	s = find(name); \
 	if (s) { \
 		if (s->sname1.field1 != v.sname2.out.field2) { \
-			printf("(%s) %s/%s [%s] != %s/%s [%s]\n", \
-				__location__, \
-				#sname1, #field1, \
-				nt_time_string(tctx, s->sname1.field1), \
-				#sname2, #field2, \
-				nt_time_string(tctx, v.sname2.out.field2)); \
+			torture_result(tctx, TORTURE_FAIL, \
+			    "(%s) %s/%s [%s] != %s/%s [%s]\n", \
+			    __location__, \
+			    #sname1, #field1, \
+			    nt_time_string(tctx, s->sname1.field1), \
+			    #sname2, #field2, \
+			    nt_time_string(tctx, v.sname2.out.field2)); \
 			ret = false; \
 		} \
 	}} while (0)
@@ -509,10 +510,11 @@ static bool test_one_file(struct torture_context *tctx,
 	if (s) { \
 		if (!s->sname1.field1 || \
 		    strcmp(s->sname1.field1, v.sname2.out.field2.s)) { \
-			printf("(%s) %s/%s [%s] != %s/%s [%s]\n", \
-				__location__, \
-				#sname1, #field1, s->sname1.field1, \
-				#sname2, #field2, v.sname2.out.field2.s); \
+			torture_result(tctx, TORTURE_FAIL, \
+			    "(%s) %s/%s [%s] != %s/%s [%s]\n", \
+			    __location__, \
+			    #sname1, #field1, s->sname1.field1, \
+			    #sname2, #field2, v.sname2.out.field2.s); \
 			ret = false; \
 		} \
 	}} while (0)
@@ -522,10 +524,11 @@ static bool test_one_file(struct torture_context *tctx,
 	if (s) { \
 		if (!s->sname1.field1.s || \
 		    strcmp(s->sname1.field1.s, v.sname2.out.field2.s)) { \
-			printf("(%s) %s/%s [%s] != %s/%s [%s]\n", \
-				__location__, \
-				#sname1, #field1, s->sname1.field1.s, \
-				#sname2, #field2, v.sname2.out.field2.s); \
+			torture_result(tctx, TORTURE_FAIL, \
+			    "(%s) %s/%s [%s] != %s/%s [%s]\n", \
+			    __location__, \
+			    #sname1, #field1, s->sname1.field1.s, \
+			    #sname2, #field2, v.sname2.out.field2.s); \
 			ret = false; \
 		} \
 	}} while (0)
@@ -535,10 +538,10 @@ static bool test_one_file(struct torture_context *tctx,
 	if (s) { \
 		if (!s->sname1.field1.s || \
 		    strcmp(s->sname1.field1.s, fname)) { \
-			printf("(%s) %s/%s [%s] != %s\n", \
-				__location__, \
-				#sname1, #field1, s->sname1.field1.s, \
-				fname); \
+			torture_result(tctx, TORTURE_FAIL, \
+			    "(%s) %s/%s [%s] != %s\n", \
+			    __location__, \
+			    #sname1, #field1, s->sname1.field1.s, fname); \
 			ret = false; \
 		} \
 	}} while (0)
@@ -548,10 +551,10 @@ static bool test_one_file(struct torture_context *tctx,
 	if (s) { \
 		if (!s->sname1.field1 || \
 		    strcmp(s->sname1.field1, fname)) { \
-			printf("(%s) %s/%s [%s] != %s\n", \
-				__location__, \
-				#sname1, #field1, s->sname1.field1, \
-				fname); \
+			torture_result(tctx, TORTURE_FAIL, \
+			   "(%s) %s/%s [%s] != %s\n", \
+			    __location__, \
+			    #sname1, #field1, s->sname1.field1, fname); \
 			ret = false; \
 		} \
 	}} while (0)
@@ -574,6 +577,7 @@ static bool test_one_file(struct torture_context *tctx,
 	CHECK_NTTIME("SMB2_FIND_BOTH_DIRECTORY_INFO",    both_directory_info,    create_time, all_info2, all_info2, create_time);
 	CHECK_NTTIME("SMB2_FIND_ID_FULL_DIRECTORY_INFO", id_full_directory_info, create_time, all_info2, all_info2, create_time);
 	CHECK_NTTIME("SMB2_FIND_ID_BOTH_DIRECTORY_INFO", id_both_directory_info, create_time, all_info2, all_info2, create_time);
+
 	CHECK_NTTIME("SMB2_FIND_DIRECTORY_INFO",         directory_info,         access_time, all_info2, all_info2, access_time);
 	CHECK_NTTIME("SMB2_FIND_FULL_DIRECTORY_INFO",    full_directory_info,    access_time, all_info2, all_info2, access_time);
 	CHECK_NTTIME("SMB2_FIND_BOTH_DIRECTORY_INFO",    both_directory_info,    access_time, all_info2, all_info2, access_time);
@@ -603,16 +607,16 @@ static bool test_one_file(struct torture_context *tctx,
 	CHECK_VAL("SMB2_FIND_ID_FULL_DIRECTORY_INFO",    id_full_directory_info, ea_size, all_info2, all_info2, ea_size);
 	CHECK_VAL("SMB2_FIND_ID_BOTH_DIRECTORY_INFO",    id_both_directory_info, ea_size, all_info2, all_info2, ea_size);
 
-	CHECK_WSTR("SMB2_FIND_BOTH_DIRECTORY_INFO",      both_directory_info,    short_name, alt_info, alt_name_info, fname, STR_UNICODE);
-
 	CHECK_NAME("SMB2_FIND_DIRECTORY_INFO",           directory_info,         name, fname, STR_TERMINATE_ASCII);
 	CHECK_NAME("SMB2_FIND_FULL_DIRECTORY_INFO",      full_directory_info,    name, fname, STR_TERMINATE_ASCII);
 	CHECK_NAME("SMB2_FIND_NAME_INFO",                name_info,              name, fname, STR_TERMINATE_ASCII);
 	CHECK_NAME("SMB2_FIND_BOTH_DIRECTORY_INFO",      both_directory_info,    name, fname, STR_TERMINATE_ASCII);
 	CHECK_NAME("SMB2_FIND_ID_FULL_DIRECTORY_INFO",   id_full_directory_info, name, fname, STR_TERMINATE_ASCII);
 	CHECK_NAME("SMB2_FIND_ID_BOTH_DIRECTORY_INFO",   id_both_directory_info, name, fname, STR_TERMINATE_ASCII);
-	CHECK_VAL("SMB2_FIND_ID_FULL_DIRECTORY_INFO",    id_full_directory_info, file_id, internal_info, internal_information, file_id);
 
+	CHECK_WSTR("SMB2_FIND_BOTH_DIRECTORY_INFO",      both_directory_info,    short_name, alt_info, alt_name_info, fname, STR_UNICODE);
+
+	CHECK_VAL("SMB2_FIND_ID_FULL_DIRECTORY_INFO",    id_full_directory_info, file_id, internal_info, internal_information, file_id);
 	CHECK_VAL("SMB2_FIND_ID_BOTH_DIRECTORY_INFO",    id_both_directory_info, file_id, internal_info, internal_information, file_id);
 
 done:
@@ -685,7 +689,7 @@ static NTSTATUS multiple_smb2_search(struct smb2_tree *tree,
 		status = smb2_find_level(tree, tree, &f, &count, &d);
 		if (NT_STATUS_EQUAL(status, STATUS_NO_MORE_FILES))


-- 
Samba Shared Repository


More information about the samba-cvs mailing list