mirror of
https://github.com/samba-team/samba.git
synced 2025-03-08 04:58:40 +03:00
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.
This commit is contained in:
parent
c4c230bd0f
commit
ac0ffba004
@ -525,6 +525,8 @@ sub provision($$$$$$)
|
||||
|
||||
max protocol = SMB2
|
||||
read only = no
|
||||
server signing = auto
|
||||
|
||||
smbd:sharedelay = 100000
|
||||
# smbd:writetimeupdatedelay = 500000
|
||||
map hidden = no
|
||||
|
@ -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"
|
||||
|
@ -52,6 +52,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;
|
||||
|
||||
@ -178,7 +179,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;
|
||||
}
|
||||
@ -311,7 +312,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;
|
||||
}
|
||||
@ -412,7 +413,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));
|
||||
@ -887,7 +888,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;
|
||||
@ -902,9 +903,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;
|
||||
|
||||
printf("starting readwritelarge\n");
|
||||
if (signing_state == Required) {
|
||||
/* Horrible cheat to force
|
||||
multiple signed outstanding
|
||||
packets against a Samba server.
|
||||
*/
|
||||
cli1->is_samba = false;
|
||||
}
|
||||
|
||||
printf("starting readwritelarge_internal\n");
|
||||
|
||||
cli_unlink(cli1, lockfname, aSYSTEM | aHIDDEN);
|
||||
|
||||
@ -923,10 +932,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;
|
||||
}
|
||||
@ -958,10 +967,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;
|
||||
}
|
||||
@ -992,6 +1001,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;
|
||||
|
||||
@ -1440,7 +1463,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");
|
||||
@ -7782,6 +7805,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},
|
||||
|
Loading…
x
Reference in New Issue
Block a user