diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2004-04-14 13:40:07 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2004-04-14 13:40:07 +0000 |
commit | ddf9c4a7444970b5ad4c0ed4a82bdc7bd4964c15 (patch) | |
tree | 0f0c9b57900da5163c44f21cc1b3e7288e677d1f /winsup/cygwin/fhandler.h | |
parent | ba1a97a18b5d629f62c691d62c69fe97da903b05 (diff) | |
download | cygnal-ddf9c4a7444970b5ad4c0ed4a82bdc7bd4964c15.tar.gz cygnal-ddf9c4a7444970b5ad4c0ed4a82bdc7bd4964c15.tar.bz2 cygnal-ddf9c4a7444970b5ad4c0ed4a82bdc7bd4964c15.zip |
* fhandler.cc (fhandler_base::open): Accomodate query_write_control
query_state.
(fhandler_base::fchown): New method.
* fhandler.h: Declare fchown method in fhandler_base,
fhandler_disk_file and fhandler_virtual.
(enum query_state): Add query_write_control.
* fhandler_disk_file.cc (fhandler_disk_file::fchmod): Set query_state
to query_write_control. Only remove FILE_ATTRIBUTE_READONLY if not
setting security descriptor.
(fhandler_disk_file::fchown): New method.
* fhandler_virtual.cc (fhandler_virtual::fchown): New method.
* sec_acl.cc (setacl): Call write_sd with additional handle attribute.
* security.cc (write_sd): Take handle argument. Only request owner
if getting SE_RESTORE_NAME privilege failed. Only open file if
NtSetSecurityObject failed or handle is NULL.
(set_nt_attribute): Call write_sd with additional handle attribute.
* security.h (write_sd): Declare with additional handle argument.
Diffstat (limited to 'winsup/cygwin/fhandler.h')
-rw-r--r-- | winsup/cygwin/fhandler.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h index ece8d4984..0ee198c54 100644 --- a/winsup/cygwin/fhandler.h +++ b/winsup/cygwin/fhandler.h @@ -62,8 +62,9 @@ enum bg_check_types enum query_state { no_query = 0, - query_read_control = 1, - query_null_access = 2 + query_null_access = 1, + query_read_control = 2, + query_write_control = 3 }; class fhandler_base @@ -243,6 +244,7 @@ class fhandler_base int __stdcall fstat_by_handle (struct __stat64 *buf) __attribute__ ((regparm (2))); int __stdcall fstat_by_name (struct __stat64 *buf) __attribute__ ((regparm (2))); virtual int __stdcall fchmod (mode_t mode) __attribute__ ((regparm (1))); + virtual int __stdcall fchown (__uid32_t uid, __gid32_t gid) __attribute__ ((regparm (2))); virtual int ioctl (unsigned int cmd, void *); virtual int fcntl (int cmd, void *); virtual char const *ttyname () { return get_name (); } @@ -568,6 +570,7 @@ class fhandler_disk_file: public fhandler_base bool isdevice () { return false; } int __stdcall fstat (struct __stat64 *buf) __attribute__ ((regparm (2))); int __stdcall fchmod (mode_t mode) __attribute__ ((regparm (1))); + int __stdcall fchown (__uid32_t uid, __gid32_t gid) __attribute__ ((regparm (2))); HANDLE mmap (caddr_t *addr, size_t len, DWORD access, int flags, _off64_t off); int munmap (HANDLE h, caddr_t addr, size_t len); @@ -1101,6 +1104,7 @@ class fhandler_virtual : public fhandler_base int close (void); int __stdcall fstat (struct stat *buf) __attribute__ ((regparm (2))); int __stdcall fchmod (mode_t mode) __attribute__ ((regparm (1))); + int __stdcall fchown (__uid32_t uid, __gid32_t gid) __attribute__ ((regparm (2))); virtual bool fill_filebuf (); void fixup_after_exec (); }; |