diff options
author | Jeremy Allison <jra@samba.org> | 2005-02-23 23:41:15 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 10:55:45 -0500 |
commit | 9150205f985265216929006bab1976bd6d2bfc24 (patch) | |
tree | 03a68ae1a318024c4e0d653a8d19df5a2e243687 /source3/torture | |
parent | e2cc3f48162d7dec35fb3f256c031979cfa531f8 (diff) | |
download | samba-9150205f985265216929006bab1976bd6d2bfc24.tar.gz samba-9150205f985265216929006bab1976bd6d2bfc24.tar.bz2 samba-9150205f985265216929006bab1976bd6d2bfc24.zip |
r5525: Add extra case to torture to test this (we currently fail with the wrong
error message but we correctly deny the open).
Jeremy.
(This used to be commit 99b89867c33a2209c42b6610d62ead0cf2af05af)
Diffstat (limited to 'source3/torture')
-rw-r--r-- | source3/torture/torture.c | 47 |
1 files changed, 45 insertions, 2 deletions
diff --git a/source3/torture/torture.c b/source3/torture/torture.c index 72a391dbdb..ec13abc1c1 100644 --- a/source3/torture/torture.c +++ b/source3/torture/torture.c @@ -3128,7 +3128,7 @@ static BOOL run_deletetest(int dummy) FILE_OVERWRITE_IF, 0, 0); if (fnum1 == -1) { - printf("[8] open of %s failed (%s)\n", fname, cli_errstr(cli1)); + printf("[8] open 1 of %s failed (%s)\n", fname, cli_errstr(cli1)); correct = False; goto fail; } @@ -3138,7 +3138,7 @@ static BOOL run_deletetest(int dummy) FILE_OPEN, 0, 0); if (fnum2 == -1) { - printf("[8] open of %s failed (%s)\n", fname, cli_errstr(cli1)); + printf("[8] open 2 of %s failed (%s)\n", fname, cli_errstr(cli2)); correct = False; goto fail; } @@ -3205,6 +3205,49 @@ static BOOL run_deletetest(int dummy) correct = False; } else printf("tenth delete on close test succeeded.\n"); + + cli_setatr(cli1, fname, 0, 0); + cli_unlink(cli1, fname); + + /* What error do we get when attempting to open a read-only file with + delete access ? */ + + /* Create a readonly file. */ + fnum1 = cli_nt_create_full(cli1, fname, 0, FILE_READ_DATA|FILE_WRITE_DATA, + FILE_ATTRIBUTE_READONLY, FILE_SHARE_NONE, FILE_OVERWRITE_IF, 0, 0); + if (fnum1 == -1) { + printf("[11] open of %s failed (%s)\n", fname, cli_errstr(cli1)); + correct = False; + goto fail; + } + + if (!cli_close(cli1, fnum1)) { + printf("[11] close failed (%s)\n", cli_errstr(cli1)); + correct = False; + goto fail; + } + + /* Now try open for delete access. */ + fnum1 = cli_nt_create_full(cli1, fname, 0, FILE_READ_ATTRIBUTES|DELETE_ACCESS, + 0, FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, + FILE_OVERWRITE_IF, 0, 0); + + if (fnum1 != -1) { + printf("[11] open of %s succeeded should have been denied with ACCESS_DENIED!\n", fname); + cli_close(cli1, fnum1); + goto fail; + correct = False; + } else { + NTSTATUS nterr = cli_nt_error(cli1); + if (!NT_STATUS_EQUAL(nterr,NT_STATUS_ACCESS_DENIED)) { + printf("[11] open of %s should have been denied with ACCESS_DENIED! Got error %s\n", fname, nt_errstr(nterr)); + goto fail; + correct = False; + } else { + printf("eleventh delete on close test succeeded.\n"); + } + } + printf("finished delete test\n"); fail: |