diff options
author | Andrew Tridgell <tridge@samba.org> | 2004-10-31 03:26:30 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:05:05 -0500 |
commit | b24fcfc1aadf56130f9f2f2371282c0c399611c2 (patch) | |
tree | 00280ff144492488eccaad1561f4930f9c3b411e /source4/torture/basic | |
parent | 50c5059ab048a5a1b9b03ca78029b333197178ba (diff) | |
download | samba-b24fcfc1aadf56130f9f2f2371282c0c399611c2.tar.gz samba-b24fcfc1aadf56130f9f2f2371282c0c399611c2.tar.bz2 samba-b24fcfc1aadf56130f9f2f2371282c0c399611c2.zip |
r3400: - allow callers to control the flags2 field in raw packets
- added testing of the FLAGS2_READ_PERMIT_EXECUTE bit in the ntdeny tests
(This used to be commit adf4a682705871186f3b77ea6d417942445fc5d3)
Diffstat (limited to 'source4/torture/basic')
-rw-r--r-- | source4/torture/basic/denytest.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/source4/torture/basic/denytest.c b/source4/torture/basic/denytest.c index 8dc6118b7d..5dfd610bff 100644 --- a/source4/torture/basic/denytest.c +++ b/source4/torture/basic/denytest.c @@ -1689,7 +1689,7 @@ static const char *bit_string(TALLOC_CTX *mem_ctx, const struct bit_value *bv, i determine if two opens conflict */ static NTSTATUS predict_share_conflict(uint32_t sa1, uint32_t am1, uint32_t sa2, uint32_t am2, - enum deny_result *res) + uint16_t flags2, enum deny_result *res) { #define CHECK_MASK(am, sa, right, share) do { \ if (((am) & (right)) && !((sa) & (share))) { \ @@ -1703,6 +1703,9 @@ static NTSTATUS predict_share_conflict(uint32_t sa1, uint32_t am1, uint32_t sa2, } if (am2 & SA_RIGHT_FILE_READ_DATA) { *res += A_R; + } else if ((am2 & SA_RIGHT_FILE_EXECUTE) && + (flags2 & FLAGS2_READ_PERMIT_EXECUTE)) { + *res += A_R; } /* if either open involves no read.write or delete access then @@ -1820,6 +1823,12 @@ static BOOL torture_ntdenytest(struct smbcli_state *cli1, struct smbcli_state *c status1 = smb_raw_open(cli1->tree, mem_ctx, &io1); status2 = smb_raw_open(cli2->tree, mem_ctx, &io2); + + if (random() % 2 == 0) { + cli2->tree->session->flags2 |= FLAGS2_READ_PERMIT_EXECUTE; + } else { + cli2->tree->session->flags2 &= ~FLAGS2_READ_PERMIT_EXECUTE; + } if (!NT_STATUS_IS_OK(status1)) { res = A_X; @@ -1847,7 +1856,9 @@ static BOOL torture_ntdenytest(struct smbcli_state *cli1, struct smbcli_state *c status2_p = predict_share_conflict(io1.ntcreatex.in.share_access, io1.ntcreatex.in.access_mask, io2.ntcreatex.in.share_access, - io2.ntcreatex.in.access_mask, &res2); + io2.ntcreatex.in.access_mask, + cli2->tree->session->flags2, + &res2); GetTimeOfDay(&tv); tdif = usec_time_diff(&tv, &tv_start); |