[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha7-497-g211e255

Tim Prouty tprouty at samba.org
Tue Mar 17 20:44:22 GMT 2009


The branch, master has been updated
       via  211e2555690afc0436c2bafb7ef8d426564cc680 (commit)
       via  7bf2a213cd589e1f0f80faab343aea30263046c2 (commit)
       via  6c08e329fa9396474b200fe7593d4a5c2082930a (commit)
      from  b29c69f45953bf099f1d4f6e6abd5726f5ac793e (commit)

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


- Log -----------------------------------------------------------------
commit 211e2555690afc0436c2bafb7ef8d426564cc680
Author: Zach Loafman <zachary.loafman at isilon.com>
Date:   Mon Mar 16 09:24:06 2009 -0700

    s4 torture: Win7 has a slightly different allowed access mask
    
    Still investigating.

commit 7bf2a213cd589e1f0f80faab343aea30263046c2
Author: Zach Loafman <zachary.loafman at isilon.com>
Date:   Fri Mar 13 09:04:33 2009 -0700

    s4 torture: Add a string version for NT_STATUS_WIN7_INVALID_RANGE
    
    Also submitted a request to cifs-protocol for a real name for this
    thing. Use win7 target logic in smb2 lock test, SMB2-LOCK now passes
    against Win7.

commit 6c08e329fa9396474b200fe7593d4a5c2082930a
Author: Zach Loafman <zachary.loafman at isilon.com>
Date:   Thu Mar 12 08:32:58 2009 -0700

    s4 libcli: Add SMB2.1 dialect to libcli
    
    Negotiate 2.1 if possible, leave negotiate results in
    transport->negotiate.dialect_revision.

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

Summary of changes:
 source4/libcli/smb2/connect.c |    3 ++-
 source4/libcli/smb2/smb2.h    |    4 +++-
 source4/libcli/util/nterr.c   |    1 +
 source4/torture/smb2/create.c |    8 +++++++-
 source4/torture/smb2/lock.c   |   39 +++++++++++++++++++++++++++++----------
 5 files changed, 42 insertions(+), 13 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/libcli/smb2/connect.c b/source4/libcli/smb2/connect.c
index 11bec42..3fd9a38 100644
--- a/source4/libcli/smb2/connect.c
+++ b/source4/libcli/smb2/connect.c
@@ -108,6 +108,7 @@ static void continue_negprot(struct smb2_request *req)
 	transport->negotiate.system_time = state->negprot.out.system_time;
 	transport->negotiate.server_start_time = state->negprot.out.server_start_time;
 	transport->negotiate.security_mode = state->negprot.out.security_mode;
+	transport->negotiate.dialect_revision = state->negprot.out.dialect_revision;
 
 	switch (transport->options.signing) {
 	case SMB_SIGNING_OFF:
@@ -187,7 +188,7 @@ static void continue_socket(struct composite_context *creq)
 	state->negprot.in.capabilities  = 0;
 	unix_to_nt_time(&state->negprot.in.start_time, time(NULL));
 	dialects[0] = SMB2_DIALECT_REVISION;
-	dialects[1] = 0;
+	dialects[1] = SMB21_DIALECT_REVISION;
 	state->negprot.in.dialects = dialects;
 
 	req = smb2_negprot_send(transport, &state->negprot);
diff --git a/source4/libcli/smb2/smb2.h b/source4/libcli/smb2/smb2.h
index d1d5b84..3cc3ec2 100644
--- a/source4/libcli/smb2/smb2.h
+++ b/source4/libcli/smb2/smb2.h
@@ -35,6 +35,7 @@ struct smb2_negotiate {
 	NTTIME system_time;
 	NTTIME server_start_time;
 	uint16_t security_mode;
+	uint16_t dialect_revision;
 };
 
 /* this is the context for the smb2 transport layer */
@@ -226,8 +227,9 @@ struct smb2_request {
 
 #define SMB2_MAGIC 0x424D53FE /* 0xFE 'S' 'M' 'B' */
 
-/* the dialect we support */
+/* the dialects we support */
 #define SMB2_DIALECT_REVISION           0x202
+#define SMB21_DIALECT_REVISION          0x210
 
 /* SMB2 negotiate security_mode */
 #define SMB2_NEGOTIATE_SIGNING_ENABLED   0x01
diff --git a/source4/libcli/util/nterr.c b/source4/libcli/util/nterr.c
index 4e7cdf5..7f544b5 100644
--- a/source4/libcli/util/nterr.c
+++ b/source4/libcli/util/nterr.c
@@ -549,6 +549,7 @@ static const nt_err_code_struct nt_errs[] =
 	{ "NT_STATUS_OBJECTID_NOT_FOUND", NT_STATUS_OBJECTID_NOT_FOUND },
 	{ "NT_STATUS_DOWNGRADE_DETECTED", NT_STATUS_DOWNGRADE_DETECTED },
 	{ "NT_STATUS_DS_BUSY", NT_STATUS_DS_BUSY },
+	{ "XXX_INVALID_RANGE", NT_STATUS_WIN7_INVALID_RANGE },
 	{ "STATUS_MORE_ENTRIES", STATUS_MORE_ENTRIES },
 	{ "STATUS_SOME_UNMAPPED", STATUS_SOME_UNMAPPED },
 	{ "STATUS_NOTIFY_CLEANUP", STATUS_NOTIFY_CLEANUP },
diff --git a/source4/torture/smb2/create.c b/source4/torture/smb2/create.c
index 6d898a1..febfbe0 100644
--- a/source4/torture/smb2/create.c
+++ b/source4/torture/smb2/create.c
@@ -43,6 +43,8 @@
 		return false;					\
 	}} while (0)
 
+#define TARGET_IS_WIN7(_tctx) (torture_setting_bool(_tctx, "win7", false))
+
 /*
   test some interesting combinations found by gentest
  */
@@ -160,7 +162,11 @@ static bool test_create_gentest(struct torture_context *torture, struct smb2_tre
 		}
 	}
 
-	CHECK_EQUAL(access_mask, 0x0df0fe00);
+	if (TARGET_IS_WIN7(torture)) {
+		CHECK_EQUAL(access_mask, 0x0de0fe00);
+	} else {
+		CHECK_EQUAL(access_mask, 0x0df0fe00);
+	}
 
 	io.in.create_disposition = NTCREATEX_DISP_OPEN_IF;
 	io.in.desired_access = SEC_FLAG_MAXIMUM_ALLOWED;
diff --git a/source4/torture/smb2/lock.c b/source4/torture/smb2/lock.c
index d820983..5f0293c 100644
--- a/source4/torture/smb2/lock.c
+++ b/source4/torture/smb2/lock.c
@@ -28,6 +28,9 @@
 
 #include "librpc/gen_ndr/ndr_security.h"
 
+#define TARGET_IS_WINDOWS(_tctx) (torture_setting_bool(_tctx, "win7", false) || torture_setting_bool(torture, "windows", false))
+#define TARGET_IS_WIN7(_tctx) (torture_setting_bool(_tctx, "win7", false))
+
 #define CHECK_STATUS(status, correct) do { \
 	if (!NT_STATUS_EQUAL(status, correct)) { \
 		printf("(%s) Incorrect status %s - should be %s\n", \
@@ -97,16 +100,26 @@ static bool test_valid_request(struct torture_context *torture, struct smb2_tree
 	el[0].reserved		= 0x00000000;
 	el[0].flags		= SMB2_LOCK_FLAG_EXCLUSIVE|SMB2_LOCK_FLAG_FAIL_IMMEDIATELY;
 	status = smb2_lock(tree, &lck);
-	CHECK_STATUS(status, NT_STATUS_OK);
+	if (TARGET_IS_WIN7(torture)) {
+		CHECK_STATUS(status, NT_STATUS_WIN7_INVALID_RANGE);
+	} else {
+		CHECK_STATUS(status, NT_STATUS_OK);
+	}
 	CHECK_VALUE(lck.out.reserved, 0);
 
 	lck.in.reserved		= 0x123ab2;
 	status = smb2_lock(tree, &lck);
-	CHECK_STATUS(status, NT_STATUS_LOCK_NOT_GRANTED);
+	if (TARGET_IS_WIN7(torture)) {
+		CHECK_STATUS(status, NT_STATUS_WIN7_INVALID_RANGE);
+	} else {
+		CHECK_STATUS(status, NT_STATUS_OK);
+	}
 
 	lck.in.reserved		= 0x123ab3;
 	status = smb2_lock(tree, &lck);
-	if (torture_setting_bool(torture, "windows", false)) {
+	if (TARGET_IS_WIN7(torture)) {
+		CHECK_STATUS(status, NT_STATUS_WIN7_INVALID_RANGE);
+	} else if (TARGET_IS_WINDOWS(torture)) {
 		CHECK_STATUS(status, NT_STATUS_OK);
 	} else {
 		CHECK_STATUS(status, NT_STATUS_LOCK_NOT_GRANTED);
@@ -115,11 +128,17 @@ static bool test_valid_request(struct torture_context *torture, struct smb2_tree
 
 	lck.in.reserved		= 0x123ab4;
 	status = smb2_lock(tree, &lck);
-	CHECK_STATUS(status, NT_STATUS_LOCK_NOT_GRANTED);
+	if (TARGET_IS_WIN7(torture)) {
+		CHECK_STATUS(status, NT_STATUS_WIN7_INVALID_RANGE);
+	} else {
+		CHECK_STATUS(status, NT_STATUS_LOCK_NOT_GRANTED);
+	}
 
 	lck.in.reserved		= 0x123ab5;
 	status = smb2_lock(tree, &lck);
-	if (torture_setting_bool(torture, "windows", false)) {
+	if (TARGET_IS_WIN7(torture)) {
+		CHECK_STATUS(status, NT_STATUS_WIN7_INVALID_RANGE);
+	} else if (TARGET_IS_WINDOWS(torture)) {
 		CHECK_STATUS(status, NT_STATUS_OK);
 	} else {
 		CHECK_STATUS(status, NT_STATUS_LOCK_NOT_GRANTED);
@@ -141,7 +160,7 @@ static bool test_valid_request(struct torture_context *torture, struct smb2_tree
 	CHECK_STATUS(status, NT_STATUS_LOCK_NOT_GRANTED);
 
 	status = smb2_lock(tree, &lck);
-	if (torture_setting_bool(torture, "windows", false)) {
+	if (TARGET_IS_WINDOWS(torture)) {
 		CHECK_STATUS(status, NT_STATUS_OK);
 	} else {
 		CHECK_STATUS(status, NT_STATUS_LOCK_NOT_GRANTED);
@@ -152,7 +171,7 @@ static bool test_valid_request(struct torture_context *torture, struct smb2_tree
 	CHECK_STATUS(status, NT_STATUS_LOCK_NOT_GRANTED);
 
 	status = smb2_lock(tree, &lck);
-	if (torture_setting_bool(torture, "windows", false)) {
+	if (TARGET_IS_WINDOWS(torture)) {
 		CHECK_STATUS(status, NT_STATUS_OK);
 	} else {
 		CHECK_STATUS(status, NT_STATUS_LOCK_NOT_GRANTED);
@@ -481,7 +500,6 @@ static bool test_lock_rw_exclusiv(struct torture_context *torture, struct smb2_t
 	return test_lock_read_write(torture, tree, &s);
 }
 
-
 static bool test_lock_auto_unlock(struct torture_context *torture, struct smb2_tree *tree)
 {
 	bool ret = true;
@@ -513,13 +531,14 @@ static bool test_lock_auto_unlock(struct torture_context *torture, struct smb2_t
 	CHECK_STATUS(status, NT_STATUS_LOCK_NOT_GRANTED);
 
 	status = smb2_lock(tree, &lck);
-	if (torture_setting_bool(torture, "windows", false)) {
+	if (TARGET_IS_WINDOWS(torture)) {
 		CHECK_STATUS(status, NT_STATUS_OK);
 	} else {
 		CHECK_STATUS(status, NT_STATUS_LOCK_NOT_GRANTED);
 	}
 
-	
+	status = smb2_lock(tree, &lck);
+	CHECK_STATUS(status, NT_STATUS_LOCK_NOT_GRANTED);
 
 done:
 	return ret;


-- 
Samba Shared Repository


More information about the samba-cvs mailing list