summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/include/sys/cygwin.h
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2009-10-13 10:23:31 +0000
committerCorinna Vinschen <corinna@vinschen.de>2009-10-13 10:23:31 +0000
commit0191627a260aee41f464d3e0a2c2d4d067cad5ad (patch)
treefbb1b641d62b3a8955ff1c98b293c8e4fabe4e33 /winsup/cygwin/include/sys/cygwin.h
parent6c41e710c91ef093e58e6b6923b0696d9383a685 (diff)
downloadcygnal-0191627a260aee41f464d3e0a2c2d4d067cad5ad.tar.gz
cygnal-0191627a260aee41f464d3e0a2c2d4d067cad5ad.tar.bz2
cygnal-0191627a260aee41f464d3e0a2c2d4d067cad5ad.zip
* include/sys/cygwin.h: Add new cygwin_getinfo_type
CW_SET_EXTERNAL_TOKEN. Add new enum CW_TOKEN_IMPERSONATION, CW_TOKEN_RESTRICTED. * cygheap.h (cyguser): New flags ext_token_is_restricted, curr_token_is_restricted and setuid_to_restricted. * external.cc (cygwin_internal): Add CW_SET_EXTERNAL_TOKEN. * sec_auth.cc (set_imp_token): New function. (cygwin_set_impersonation_token): Call set_imp_token (). * security.h (set_imp_token): New prototype. * spawn.cc (spawn_guts): Use CreateProcessAsUserW if restricted token was enabled by setuid(). Do not create new window station in this case. * syscalls.cc (seteuid32): Add handling of restricted external tokens. Set HANDLE_FLAG_INHERIT for primary token. (setuid32): Set setuid_to_restricted flag. * uinfo.cc (uinfo_init): Do not reimpersonate if restricted token was enabled by setuid (). Initialize user.*_restricted flags.
Diffstat (limited to 'winsup/cygwin/include/sys/cygwin.h')
-rw-r--r--winsup/cygwin/include/sys/cygwin.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/winsup/cygwin/include/sys/cygwin.h b/winsup/cygwin/include/sys/cygwin.h
index 5f38278d7..ce9bebfdd 100644
--- a/winsup/cygwin/include/sys/cygwin.h
+++ b/winsup/cygwin/include/sys/cygwin.h
@@ -143,9 +143,17 @@ typedef enum
CW_SET_DOS_FILE_WARNING,
CW_SET_PRIV_KEY,
CW_SETERRNO,
- CW_EXIT_PROCESS
+ CW_EXIT_PROCESS,
+ CW_SET_EXTERNAL_TOKEN
} cygwin_getinfo_types;
+/* Token type for CW_SET_EXTERNAL_TOKEN */
+enum
+{
+ CW_TOKEN_IMPERSONATION = 0,
+ CW_TOKEN_RESTRICTED = 1
+};
+
#define CW_NEXTPID 0x80000000 /* or with pid to get next one */
unsigned long cygwin_internal (cygwin_getinfo_types, ...);