diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2004-04-14 20:16:29 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2004-04-14 20:16:29 +0000 |
commit | a653f600f5dd6a6d7ede4b2969659f500804233d (patch) | |
tree | 0bbfcc641e8345a453526befdffcfb539f8f3de8 /winsup/cygwin/security.cc | |
parent | 0c5f00f98a5ea0ce297f4002a81166788b4410fc (diff) | |
download | cygnal-a653f600f5dd6a6d7ede4b2969659f500804233d.tar.gz cygnal-a653f600f5dd6a6d7ede4b2969659f500804233d.tar.bz2 cygnal-a653f600f5dd6a6d7ede4b2969659f500804233d.zip |
* sec_acl.cc (getacl): Avoid compiler warning.
* security.cc (write_sd): Ditto. Fix error handling.
Diffstat (limited to 'winsup/cygwin/security.cc')
-rw-r--r-- | winsup/cygwin/security.cc | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/winsup/cygwin/security.cc b/winsup/cygwin/security.cc index c0ad954b7..239505128 100644 --- a/winsup/cygwin/security.cc +++ b/winsup/cygwin/security.cc @@ -1148,8 +1148,9 @@ write_sd (HANDLE fh, const char *file, security_descriptor &sd) return -1; } } - NTSTATUS ret; + NTSTATUS ret = STATUS_SUCCESS; int retry = 0; + res = -1; for (; retry < 2; ++retry) { if (retry && (fh = CreateFile (file, WRITE_OWNER | WRITE_DAC, @@ -1168,12 +1169,13 @@ write_sd (HANDLE fh, const char *file, security_descriptor &sd) } if (retry && fh != INVALID_HANDLE_VALUE) CloseHandle (fh); - if (ret != STATUS_SUCCESS) - { - __seterrno_from_win_error (RtlNtStatusToDosError (ret)); - return -1; - } - return 0; + if (fh == INVALID_HANDLE_VALUE) /* CreateFile failed */ + __seterrno (); + else if (ret != STATUS_SUCCESS) /* NtSetSecurityObject failed */ + __seterrno_from_win_error (RtlNtStatusToDosError (ret)); + else /* Everything's fine. */ + res = 0; + return res; } static void |