* cygheap.h (class cygheap_user): Add member `orig_psid'.

Add method `orig_sid()'.
	* cygheap.cc (cygheap_user::set_sid): Maintain orig_psid.
This commit is contained in:
Corinna Vinschen 2002-05-08 14:21:08 +00:00
parent 84d06cb64d
commit 6327de5fef
3 changed files with 19 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2002-05-08 Corinna Vinschen <corinna@vinschen.de>
* cygheap.h (class cygheap_user): Add member `orig_psid'.
Add method `orig_sid()'.
* cygheap.cc (cygheap_user::set_sid): Maintain orig_psid.
2002-04-28 Norbert Schulze <norbert.schulze@web.de>
* localtime.cc (tzsetwall): Use wildabbr if generated timezone name

View File

@ -468,13 +468,23 @@ cygheap_user::set_sid (PSID new_sid)
{
if (psid)
cfree (psid);
if (orig_psid)
cfree (orig_psid);
psid = NULL;
orig_psid = NULL;
return TRUE;
}
else
{
if (!psid)
{
if (!orig_psid)
{
orig_psid = cmalloc (HEAP_STR, MAX_SID_LEN);
CopySid (MAX_SID_LEN, orig_psid, new_sid);
}
psid = cmalloc (HEAP_STR, MAX_SID_LEN);
}
return CopySid (MAX_SID_LEN, psid, new_sid);
}
}

View File

@ -94,6 +94,7 @@ class cygheap_user
char *plogsrv; /* Logon server, may be FQDN */
char *pdomain; /* Logon domain of the user */
PSID psid; /* buffer for user's SID */
PSID orig_psid; /* Remains intact even after impersonation */
public:
__uid16_t orig_uid; /* Remains intact even after impersonation */
__uid16_t orig_gid; /* Ditto */
@ -120,6 +121,7 @@ public:
BOOL set_sid (PSID new_sid);
PSID sid () const { return psid; }
PSID orig_sid () const { return orig_psid; }
void operator =(cygheap_user &user)
{