1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00

smbtorture: add a test trying to create a stream on share without streams support

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15126
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15161

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
This commit is contained in:
Ralph Boehme 2022-09-01 18:55:23 +02:00
parent a5156649d5
commit 3dcdab86f1
5 changed files with 53 additions and 0 deletions

View File

@ -0,0 +1 @@
^samba3.smb2.create_no_streams.no_stream\(fileserver\)

View File

@ -1097,6 +1097,8 @@ for t in tests:
elif t == "smb2.twrp":
# This is being driven by samba3.blackbox.shadow_copy_torture
pass
elif t == "smb2.create_no_streams":
plansmbtorture4testsuite(t, "fileserver", '//$SERVER_IP/nfs4acl_simple_40 -U$USERNAME%$PASSWORD')
elif t == "rpc.wkssvc":
plansmbtorture4testsuite(t, "ad_member", '//$SERVER/tmp -U$DC_USERNAME%$DC_PASSWORD')
elif t == "rpc.srvsvc":

View File

@ -389,6 +389,7 @@ smb2_s3only = [
"smb2.async_dosmode",
"smb2.twrp",
"smb2.ea",
"smb2.create_no_streams",
]
smb2 = [x for x in smbtorture4_testsuites("smb2.") if x not in smb2_s3only]

View File

@ -3979,3 +3979,51 @@ struct torture_suite *torture_smb2_bench_init(TALLOC_CTX *ctx)
return suite;
}
static bool test_no_stream(struct torture_context *tctx,
struct smb2_tree *tree)
{
struct smb2_create c;
NTSTATUS status;
bool ret = true;
const char *names[] = {
"test_no_stream::$DATA",
"test_no_stream::foooooooooooo",
"test_no_stream:stream",
"test_no_stream:stream:$DATA",
NULL
};
int i;
for (i = 0; names[i] != NULL; i++) {
c = (struct smb2_create) {
.in.desired_access = SEC_FLAG_MAXIMUM_ALLOWED,
.in.file_attributes = FILE_ATTRIBUTE_NORMAL,
.in.create_disposition = NTCREATEX_DISP_OPEN,
.in.share_access = NTCREATEX_SHARE_ACCESS_MASK,
.in.fname = names[i],
};
status = smb2_create(tree, tctx, &c);
if (!NT_STATUS_EQUAL(status, NT_STATUS_OBJECT_NAME_INVALID)) {
torture_comment(
tctx, "Expected NT_STATUS_OBJECT_NAME_INVALID, "
"got %s, name: '%s'\n",
nt_errstr(status), names[i]);
torture_fail_goto(tctx, done, "Bad create result\n");
}
}
done:
return ret;
}
struct torture_suite *torture_smb2_create_no_streams_init(TALLOC_CTX *ctx)
{
struct torture_suite *suite = torture_suite_create(ctx, "create_no_streams");
torture_suite_add_1smb2_test(suite, "no_stream", test_no_stream);
suite->description = talloc_strdup(suite, "SMB2-CREATE stream test on share without streams support");
return suite;
}

View File

@ -215,6 +215,7 @@ NTSTATUS torture_smb2_init(TALLOC_CTX *ctx)
torture_suite_add_1smb2_test(suite, "session-id", run_sessidtest);
torture_suite_add_suite(suite, torture_smb2_deny_init(suite));
torture_suite_add_suite(suite, torture_smb2_ea(suite));
torture_suite_add_suite(suite, torture_smb2_create_no_streams_init(suite));
suite->description = talloc_strdup(suite, "SMB2-specific tests");