summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/security.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2004-04-14 20:16:29 +0000
committerCorinna Vinschen <corinna@vinschen.de>2004-04-14 20:16:29 +0000
commita653f600f5dd6a6d7ede4b2969659f500804233d (patch)
tree0bbfcc641e8345a453526befdffcfb539f8f3de8 /winsup/cygwin/security.cc
parent0c5f00f98a5ea0ce297f4002a81166788b4410fc (diff)
downloadcygnal-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.cc16
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