From f7fa593d6b33a17dd543ea12df02625c409ecf0e Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 4 Jun 2001 14:29:54 +0000 Subject: [PATCH] * cygheap.h (cygheap_user::cygheap_user): Initialize token to INVALID_HANDLE_VALUE. * uinfo.cc (uinfo_init): Close token handle if needed. --- winsup/cygwin/ChangeLog | 6 ++++++ winsup/cygwin/cygheap.h | 3 ++- winsup/cygwin/uinfo.cc | 2 ++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 820c41f32..c4cf3bb2d 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,9 @@ +Mon Jun 4 16:21:00 2001 Corinna Vinschen + + * cygheap.h (cygheap_user::cygheap_user): Initialize token to + INVALID_HANDLE_VALUE. + * uinfo.cc (uinfo_init): Close token handle if needed. + Sun Jun 3 20:52:13 2001 Christopher Faylor * path.cc (normalize_posix_path): Revert .. check removed by previous diff --git a/winsup/cygwin/cygheap.h b/winsup/cygwin/cygheap.h index 6348590a2..a5c823f74 100644 --- a/winsup/cygwin/cygheap.h +++ b/winsup/cygwin/cygheap.h @@ -107,7 +107,8 @@ public: HANDLE token; BOOL impersonated; - cygheap_user () : pname (NULL), plogsrv (NULL), pdomain (NULL), psid (NULL) {} + cygheap_user () : pname (NULL), plogsrv (NULL), pdomain (NULL), + psid (NULL), token (INVALID_HANDLE_VALUE) {} ~cygheap_user (); void set_name (const char *new_name); diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc index b024396e8..a3b734ebf 100644 --- a/winsup/cygwin/uinfo.cc +++ b/winsup/cygwin/uinfo.cc @@ -161,6 +161,8 @@ uinfo_init () Setting `impersonated' to TRUE seems to be wrong but it isn't. Impersonated is thought as "Current User and `token' are coincident". See seteuid() for the mechanism behind that. */ + if (cygheap->user.token != INVALID_HANDLE_VALUE) + CloseHandle (cygheap->user.token); cygheap->user.token = INVALID_HANDLE_VALUE; cygheap->user.impersonated = TRUE;