summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2008-08-14 15:14:53 +0200
committerStefan Metzmacher <metze@samba.org>2008-08-14 15:14:53 +0200
commitc1c6c1b609ab57186dab7b13c56bfe4475a733f7 (patch)
treef2efb1fa74cb4eab5f7b22fd43fc0b54414eb1f8
parente75f1072b6c3735690d7b20682036b8bc5977dc5 (diff)
downloadsamba-c1c6c1b609ab57186dab7b13c56bfe4475a733f7.tar.gz
samba-c1c6c1b609ab57186dab7b13c56bfe4475a733f7.tar.bz2
samba-c1c6c1b609ab57186dab7b13c56bfe4475a733f7.zip
RAW-OPEN: be more strict in create_option checking
metze (This used to be commit d548f5dee5980eae0aea25f1314238eb4f963568)
-rw-r--r--source4/torture/raw/open.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/source4/torture/raw/open.c b/source4/torture/raw/open.c
index 39ff443ccd..f3494ea3d0 100644
--- a/source4/torture/raw/open.c
+++ b/source4/torture/raw/open.c
@@ -845,6 +845,7 @@ static bool test_nttrans_create(struct smbcli_state *cli, struct torture_context
bool ret = true;
int i;
uint32_t ok_mask, not_supported_mask, invalid_parameter_mask;
+ uint32_t not_a_directory_mask, unexpected_mask;
struct {
uint32_t open_disp;
bool with_file;
@@ -1004,13 +1005,16 @@ static bool test_nttrans_create(struct smbcli_state *cli, struct torture_context
smbcli_close(cli->tree, fnum);
}
- ok_mask = not_supported_mask = invalid_parameter_mask = 0;
-
io.ntcreatex.in.file_attr = 0;
io.ntcreatex.in.open_disposition = NTCREATEX_DISP_OPEN_IF;
io.ntcreatex.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED;
/* Check for options that should return NOT_SUPPORTED, OK or INVALID_PARAMETER */
+ ok_mask = 0;
+ not_supported_mask = 0;
+ invalid_parameter_mask = 0;
+ not_a_directory_mask = 0;
+ unexpected_mask = 0;
for (i=0; i < 32; i++) {
uint32_t create_option = 1<<i;
if (create_option & NTCREATEX_OPTIONS_DELETE_ON_CLOSE) {
@@ -1025,14 +1029,19 @@ static bool test_nttrans_create(struct smbcli_state *cli, struct torture_context
smbcli_close(cli->tree, io.ntcreatex.out.file.fnum);
} else if (NT_STATUS_EQUAL(status, NT_STATUS_INVALID_PARAMETER)) {
invalid_parameter_mask |= create_option;
+ } else if (NT_STATUS_EQUAL(status, NT_STATUS_NOT_A_DIRECTORY)) {
+ not_a_directory_mask |= 1<<i;
} else {
+ unexpected_mask |= 1<<i;
printf("create option 0x%08x returned %s\n", create_option, nt_errstr(status));
}
}
CHECK_VAL(ok_mask, 0x00efcfce);
+ CHECK_VAL(not_a_directory_mask, 0x00000001);
CHECK_VAL(not_supported_mask, 0x00002000);
CHECK_VAL(invalid_parameter_mask, 0xff100030);
+ CHECK_VAL(unexpected_mask, 0x00000000);
smbcli_unlink(cli->tree, fname);