diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2007-07-19 17:42:11 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2007-07-19 17:42:11 +0000 |
commit | f36b37ed6ea793ce33ec84c694f772fb6de1ddd4 (patch) | |
tree | df4965883eb9adf4b405bebe4baf248ff3ad4118 | |
parent | e25b3402ac1b18d3c0ccde2faba94b8ad42ad09a (diff) | |
download | cygnal-f36b37ed6ea793ce33ec84c694f772fb6de1ddd4.tar.gz cygnal-f36b37ed6ea793ce33ec84c694f772fb6de1ddd4.tar.bz2 cygnal-f36b37ed6ea793ce33ec84c694f772fb6de1ddd4.zip |
* security.cc (set_nt_attribute): Remove.
(set_file_attribute): Do it yourself instead of calling
set_nt_attribute.
-rw-r--r-- | winsup/cygwin/ChangeLog | 6 | ||||
-rw-r--r-- | winsup/cygwin/security.cc | 31 |
2 files changed, 16 insertions, 21 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index df3efaa25..47f009c7e 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,5 +1,11 @@ 2007-07-19 Corinna Vinschen <corinna@vinschen.de> + * security.cc (set_nt_attribute): Remove. + (set_file_attribute): Do it yourself instead of calling + set_nt_attribute. + +2007-07-19 Corinna Vinschen <corinna@vinschen.de> + * fhandler_disk_file.cc (fhandler_base::fstat_by_name): Use NtQueryFullAttributesFile instead of FindFirstFile. (fhandler_base::fstat_fs): Drop check for exec_state. Drop check for diff --git a/winsup/cygwin/security.cc b/winsup/cygwin/security.cc index df4953a44..5fca3d8ed 100644 --- a/winsup/cygwin/security.cc +++ b/winsup/cygwin/security.cc @@ -1892,32 +1892,21 @@ set_security_attribute (int attribute, PSECURITY_ATTRIBUTES psa, attribute, sd); } -static int -set_nt_attribute (HANDLE handle, const char *file, - __uid32_t uid, __gid32_t gid, int attribute) -{ - security_descriptor sd; - - if ((!handle || get_nt_object_security (handle, SE_FILE_OBJECT, sd)) - && read_sd (file, sd) <= 0) - { - debug_printf ("read_sd %E"); - return -1; - } - - if (!alloc_sd (uid, gid, attribute, sd)) - return -1; - - return write_sd (handle, file, sd); -} - int set_file_attribute (bool use_ntsec, HANDLE handle, const char *file, __uid32_t uid, __gid32_t gid, int attribute) { - int ret; + int ret = -1; + if (use_ntsec && allow_ntsec) - ret = set_nt_attribute (handle, file, uid, gid, attribute); + { + security_descriptor sd; + + if (((handle && !get_nt_object_security (handle, SE_FILE_OBJECT, sd)) + || read_sd (file, sd) > 0) + && alloc_sd (uid, gid, attribute, sd)) + ret = write_sd (handle, file, sd); + } else ret = 0; syscall_printf ("%d = set_file_attribute (%s, %d, %d, %p)", |