summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2008-08-14 09:54:22 +0200
committerStefan Metzmacher <metze@samba.org>2008-08-14 13:13:51 +0200
commit80f2f10839521a873c37e6000d14ce2df2690f7a (patch)
treefad881fb5a473c1b1f4345ceddaa612b4ca102dd
parent548ed8d9586bbf9504bec5064a14893f5827b0e4 (diff)
downloadsamba-80f2f10839521a873c37e6000d14ce2df2690f7a.tar.gz
samba-80f2f10839521a873c37e6000d14ce2df2690f7a.tar.bz2
samba-80f2f10839521a873c37e6000d14ce2df2690f7a.zip
SMB2-CREATE: be more strict in error checking
metze (This used to be commit d7d4df78c1de19d0cd7a63daaa2fa0863a243a12)
-rw-r--r--source4/torture/smb2/create.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/source4/torture/smb2/create.c b/source4/torture/smb2/create.c
index 744c5d2b6c..6edacbfd07 100644
--- a/source4/torture/smb2/create.c
+++ b/source4/torture/smb2/create.c
@@ -54,6 +54,7 @@ static bool test_create_gentest(struct torture_context *torture, struct smb2_tre
TALLOC_CTX *tmp_ctx = talloc_new(tree);
uint32_t access_mask, file_attributes, file_attributes_set, denied_mask;
uint32_t ok_mask, not_supported_mask, invalid_parameter_mask;
+ uint32_t not_a_directory_mask, unexpected_mask;
union smb_fileinfo q;
ZERO_STRUCT(io);
@@ -104,7 +105,11 @@ static bool test_create_gentest(struct torture_context *torture, struct smb2_tre
io.in.file_attributes = 0;
io.in.create_disposition = NTCREATEX_DISP_OPEN_IF;
io.in.desired_access = SEC_FLAG_MAXIMUM_ALLOWED;
- ok_mask = not_supported_mask = invalid_parameter_mask = 0;
+ ok_mask = 0;
+ not_supported_mask = 0;
+ invalid_parameter_mask = 0;
+ not_a_directory_mask = 0;
+ unexpected_mask = 0;
{
int i;
for (i=0;i<32;i++) {
@@ -117,11 +122,14 @@ static bool test_create_gentest(struct torture_context *torture, struct smb2_tre
not_supported_mask |= 1<<i;
} else if (NT_STATUS_EQUAL(status, NT_STATUS_INVALID_PARAMETER)) {
invalid_parameter_mask |= 1<<i;
+ } else if (NT_STATUS_EQUAL(status, NT_STATUS_NOT_A_DIRECTORY)) {
+ not_a_directory_mask |= 1<<i;
} else if (NT_STATUS_EQUAL(status, NT_STATUS_OK)) {
ok_mask |= 1<<i;
status = smb2_util_close(tree, io.out.file.handle);
CHECK_STATUS(status, NT_STATUS_OK);
} else {
+ unexpected_mask |= 1<<i;
printf("create option 0x%08x returned %s\n", 1<<i, nt_errstr(status));
}
}
@@ -129,8 +137,10 @@ static bool test_create_gentest(struct torture_context *torture, struct smb2_tre
io.in.create_options = 0;
CHECK_EQUAL(ok_mask, 0x00efcf7e);
+ CHECK_EQUAL(not_a_directory_mask, 0x00000001);
CHECK_EQUAL(not_supported_mask, 0x00102080);
CHECK_EQUAL(invalid_parameter_mask, 0xff000000);
+ CHECK_EQUAL(unexpected_mask, 0x00000000);
io.in.create_disposition = NTCREATEX_DISP_OPEN_IF;
io.in.file_attributes = 0;