[SCM] Samba Shared Repository - branch v3-6-test updated

Jeremy Allison jra at samba.org
Wed Nov 10 21:43:49 MST 2010


The branch, v3-6-test has been updated
       via  cc2d13f Add test that detects problems in the SMB signing code when run through cli_write() (which doesn't use the new async methods).
      from  254d3da Fix bug #7791 - gvfsd-smb (Gnome vfs) fails to copy files from a SMB share using SMB signing.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-6-test


- Log -----------------------------------------------------------------
commit cc2d13f7f3cfdcc1ed710612ebaee985e81d9a25
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Nov 10 17:54:57 2010 -0800

    Add test that detects problems in the SMB signing code when run through cli_write() (which doesn't use the new async methods).
    
    Unfortunately, and I think due to the socket wrapper code, this doesn't
    detect the failure on the build farm, but running the RW-SIGNING test
    separately against a Samba or Windows server using signing does.
    
    Jeremy.
    (cherry picked from commit ac0ffba004160693ea5829775d732146ef261c47)

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

Summary of changes:
 selftest/target/Samba3.pm                  |    2 +
 source3/script/tests/test_smbtorture_s3.sh |    2 +-
 source3/torture/torture.c                  |   46 +++++++++++++++++++++-------
 3 files changed, 38 insertions(+), 12 deletions(-)


Changeset truncated at 500 lines:

diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm
index 9eb3ccd..9620ed8 100644
--- a/selftest/target/Samba3.pm
+++ b/selftest/target/Samba3.pm
@@ -528,6 +528,8 @@ sub provision($$$$$$)
 #	min receivefile size = 4000
 
 	read only = no
+	server signing = auto
+
 	smbd:sharedelay = 100000
 #	smbd:writetimeupdatedelay = 500000
 	map hidden = no
diff --git a/source3/script/tests/test_smbtorture_s3.sh b/source3/script/tests/test_smbtorture_s3.sh
index 1abf7b6..4680f64 100755
--- a/source3/script/tests/test_smbtorture_s3.sh
+++ b/source3/script/tests/test_smbtorture_s3.sh
@@ -28,7 +28,7 @@ tests="FDPASS LOCK1 LOCK2 LOCK3 LOCK4 LOCK5 LOCK6 LOCK7 LOCK9"
 #tests="$tests UNLINK BROWSE ATTR TRANS2 MAXFID TORTURE "
 tests="$tests UNLINK BROWSE ATTR TRANS2 TORTURE "
 tests="$tests OPLOCK1 OPLOCK2 OPLOCK3 STREAMERROR"
-tests="$tests DIR DIR1 DIR-CREATETIME TCON TCONDEV RW1 RW2 RW3"
+tests="$tests DIR DIR1 DIR-CREATETIME TCON TCONDEV RW1 RW2 RW3 RW-SIGNING"
 tests="$tests OPEN XCOPY RENAME DELETE PROPERTIES W2K"
 tests="$tests TCON2 IOCTL CHKPATH FDSESS LOCAL-SUBSTITUTE CHAIN1"
 tests="$tests GETADDRINFO POSIX UID-REGRESSION-TEST SHORTNAME-TEST"
diff --git a/source3/torture/torture.c b/source3/torture/torture.c
index 6213457..340d6eb 100644
--- a/source3/torture/torture.c
+++ b/source3/torture/torture.c
@@ -49,6 +49,7 @@ static fstring multishare_conn_fname;
 static bool use_multishare_conn = False;
 static bool do_encrypt;
 static const char *local_path = NULL;
+static int signing_state = Undefined;
 
 bool torture_showall = False;
 
@@ -175,7 +176,7 @@ static struct cli_state *open_nbt_connection(void)
 
         zero_sockaddr(&ss);
 
-	if (!(c = cli_initialise())) {
+	if (!(c = cli_initialise_ex(signing_state))) {
 		printf("Failed initialize cli_struct to connect with %s\n", host);
 		return NULL;
 	}
@@ -308,7 +309,7 @@ static struct cli_state *open_bad_nbt_connection(void)
 
         zero_sockaddr(&ss);
 
-	if (!(c = cli_initialise())) {
+	if (!(c = cli_initialise_ex(signing_state))) {
 		printf("Failed initialize cli_struct to connect with %s\n", host);
 		return NULL;
 	}
@@ -409,7 +410,7 @@ static bool torture_open_connection_share(struct cli_state **c,
 				     hostname, NULL, port_to_use, 
 				     sharename, "?????", 
 				     username, workgroup, 
-				     password, flags, Undefined, &retry);
+				     password, flags, signing_state, &retry);
 	if (!NT_STATUS_IS_OK(status)) {
 		printf("failed to open share connection: //%s/%s port:%d - %s\n",
 			hostname, sharename, port_to_use, nt_errstr(status));
@@ -884,7 +885,7 @@ static bool run_readwritemulti(int dummy)
 	return test;
 }
 
-static bool run_readwritelarge(int dummy)
+static bool run_readwritelarge_internal(int max_xmit_k)
 {
 	static struct cli_state *cli1;
 	uint16_t fnum1;
@@ -899,9 +900,17 @@ static bool run_readwritelarge(int dummy)
 	cli_sockopt(cli1, sockops);
 	memset(buf,'\0',sizeof(buf));
 
-	cli1->max_xmit = 128*1024;
+	cli1->max_xmit = max_xmit_k*1024;
+
+	if (signing_state == Required) {
+		/* Horrible cheat to force
+		   multiple signed outstanding
+		   packets against a Samba server.
+		*/
+		cli1->is_samba = false;
+	}
 
-	printf("starting readwritelarge\n");
+	printf("starting readwritelarge_internal\n");
 
 	cli_unlink(cli1, lockfname, aSYSTEM | aHIDDEN);
 
@@ -918,10 +927,10 @@ static bool run_readwritelarge(int dummy)
 	}
 
 	if (fsize == sizeof(buf))
-		printf("readwritelarge test 1 succeeded (size = %lx)\n", 
+		printf("readwritelarge_internal test 1 succeeded (size = %lx)\n",
 		       (unsigned long)fsize);
 	else {
-		printf("readwritelarge test 1 failed (size = %lx)\n", 
+		printf("readwritelarge_internal test 1 failed (size = %lx)\n",
 		       (unsigned long)fsize);
 		correct = False;
 	}
@@ -951,10 +960,10 @@ static bool run_readwritelarge(int dummy)
 	}
 
 	if (fsize == sizeof(buf))
-		printf("readwritelarge test 2 succeeded (size = %lx)\n", 
+		printf("readwritelarge_internal test 2 succeeded (size = %lx)\n",
 		       (unsigned long)fsize);
 	else {
-		printf("readwritelarge test 2 failed (size = %lx)\n", 
+		printf("readwritelarge_internal test 2 failed (size = %lx)\n",
 		       (unsigned long)fsize);
 		correct = False;
 	}
@@ -984,6 +993,20 @@ static bool run_readwritelarge(int dummy)
 	return correct;
 }
 
+static bool run_readwritelarge(int dummy)
+{
+	return run_readwritelarge_internal(128);
+}
+
+static bool run_readwritelarge_signtest(int dummy)
+{
+	bool ret;
+	signing_state = Required;
+	ret = run_readwritelarge_internal(2);
+	signing_state = Undefined;
+	return ret;
+}
+
 int line_count = 0;
 int nbio_id;
 
@@ -1432,7 +1455,7 @@ static bool run_tcon_devtype_test(int dummy)
 				     host, NULL, port_to_use,
 				     NULL, NULL,
 				     username, workgroup,
-				     password, flags, Undefined, &retry);
+				     password, flags, signing_state, &retry);
 
 	if (!NT_STATUS_IS_OK(status)) {
 		printf("could not open connection\n");
@@ -7759,6 +7782,7 @@ static struct {
 	{"RW1",  run_readwritetest, 0},
 	{"RW2",  run_readwritemulti, FLAG_MULTIPROC},
 	{"RW3",  run_readwritelarge, 0},
+	{"RW-SIGNING",  run_readwritelarge_signtest, 0},
 	{"OPEN", run_opentest, 0},
 	{"POSIX", run_simple_posix_open_test, 0},
 	{"POSIX-APPEND", run_posix_append, 0},


-- 
Samba Shared Repository


More information about the samba-cvs mailing list