Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Humblet <phumblet@phumblet.no-ip.org>2010-02-26 17:51:59 +0300
committerPierre Humblet <phumblet@phumblet.no-ip.org>2010-02-26 17:51:59 +0300
commita90dc29d18218ebe753b0c5a1df39223c2ea152b (patch)
tree9852ba3f9e56990ed4f0f902b356886a5adf193b /winsup/cygwin/security.cc
parente5ddf94aa175606d7e9ef2657ea7280199a1b4f4 (diff)
2010-02-26 Pierre Humblet <Pierre.Humblet@ieee.org>
* security.cc (check_access): Use user.imp_token if appropriate. Set errno and return if DuplicateTokenEx fails .
Diffstat (limited to 'winsup/cygwin/security.cc')
-rw-r--r--winsup/cygwin/security.cc21
1 files changed, 11 insertions, 10 deletions
diff --git a/winsup/cygwin/security.cc b/winsup/cygwin/security.cc
index a8a251297..b09a719f3 100644
--- a/winsup/cygwin/security.cc
+++ b/winsup/cygwin/security.cc
@@ -751,16 +751,17 @@ check_access (security_descriptor &sd, GENERIC_MAPPING &mapping,
? cygheap->user.imp_token ()
: hProcImpToken);
- if (!tok && !DuplicateTokenEx (hProcToken, MAXIMUM_ALLOWED, NULL,
- SecurityImpersonation, TokenImpersonation,
- &hProcImpToken))
-#ifdef DEBUGGING
- system_printf ("DuplicateTokenEx failed, %E");
-#else
- syscall_printf ("DuplicateTokenEx failed, %E");
-#endif
- else
- tok = hProcImpToken;
+ if (!tok)
+ {
+ if (!DuplicateTokenEx (hProcToken, MAXIMUM_ALLOWED, NULL,
+ SecurityImpersonation, TokenImpersonation,
+ &hProcImpToken))
+ {
+ __seterrno ();
+ return ret;
+ }
+ tok = hProcImpToken;
+ }
if (!AccessCheck (sd, tok, desired, &mapping, pset, &plen, &granted, &status))
__seterrno ();