diff options
author | Gerald Carter <jerry@samba.org> | 2002-03-15 08:14:10 +0000 |
---|---|---|
committer | Gerald Carter <jerry@samba.org> | 2002-03-15 08:14:10 +0000 |
commit | 65c007b583e2107f5ad1ba6733d3e578a143863e (patch) | |
tree | a11e1da607580d291ce74926417126ce22f34852 /source3/lib | |
parent | d19e06c0c620046658621fcec7c2cda9a77ceac3 (diff) | |
download | samba-65c007b583e2107f5ad1ba6733d3e578a143863e.tar.gz samba-65c007b583e2107f5ad1ba6733d3e578a143863e.tar.bz2 samba-65c007b583e2107f5ad1ba6733d3e578a143863e.zip |
syncing up printing code with SAMBA_2_2 (already done some merges
in the reverse).
* add in new printer change notify code from SAMBA_2_2
* add in se_map_standard() from 2.2 in _spoolss_open_printer_ex()
* sync up the _print_queue_struct in smb.h (why did someone change the
user/file names in fs_user/fs_file (or vice-versa) ? )
* sync up some cli_spoolss_XXX functions
(This used to be commit 5760315c1de4033fdc22684c940f18010010924f)
Diffstat (limited to 'source3/lib')
-rw-r--r-- | source3/lib/util_seaccess.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/source3/lib/util_seaccess.c b/source3/lib/util_seaccess.c index 5a934789e4..299b339ddf 100644 --- a/source3/lib/util_seaccess.c +++ b/source3/lib/util_seaccess.c @@ -193,6 +193,31 @@ void se_map_generic(uint32 *access_mask, struct generic_mapping *mapping) } } +/* Map standard access rights to object specific rights. This technique is + used to give meaning to assigning read, write, execute and all access to + objects. Each type of object has its own mapping of standard to object + specific access rights. */ + +void se_map_standard(uint32 *access_mask, struct standard_mapping *mapping) +{ + uint32 old_mask = *access_mask; + + if (*access_mask & READ_CONTROL_ACCESS) { + *access_mask &= ~READ_CONTROL_ACCESS; + *access_mask |= mapping->std_read; + } + + if (*access_mask & (DELETE_ACCESS|WRITE_DAC_ACCESS|WRITE_OWNER_ACCESS|SYNCHRONIZE_ACCESS)) { + *access_mask &= ~(DELETE_ACCESS|WRITE_DAC_ACCESS|WRITE_OWNER_ACCESS|SYNCHRONIZE_ACCESS); + *access_mask |= mapping->std_all; + } + + if (old_mask != *access_mask) { + DEBUG(10, ("se_map_standard(): mapped mask 0x%08x to 0x%08x\n", + old_mask, *access_mask)); + } +} + /***************************************************************************** Check access rights of a user against a security descriptor. Look at each ACE in the security descriptor until an access denied ACE denies |