+2003-09-16 Corinna Vinschen <corinna@vinschen.de>
+
+ * cygheap.cc (cygheap_user::set_saved_sid): Rename from set_orig_sid.
+ * cygheap.h (class cygheap_user): Rename orig_psid, orig_uid and
+ orig_gid to saved_psid, saved_uid and saved_gid respectively.
+ Rename methods orig_sid and set_orig_sid to saved_sid and set_saved_sid
+ respectively.
+ * sec_helper.cc (sec_acl): Accomodate above changes.
+ * spawn.cc (spawn_guts): Ditto.
+ * uinfo.cc (uinfo_init): Ditto.
+
2003-09-15 Christopher Faylor <cgf@redhat.com>
* getopt.c (opterr): Reinstate initialization.
}
BOOL
-cygheap_user::set_orig_sid ()
+cygheap_user::set_saved_sid ()
{
if (psid)
{
- if (!orig_psid) orig_psid = cmalloc (HEAP_STR, MAX_SID_LEN);
- if (orig_psid)
- return CopySid (MAX_SID_LEN, orig_psid, psid);
+ if (!saved_psid)
+ saved_psid = cmalloc (HEAP_STR, MAX_SID_LEN);
+ if (saved_psid)
+ return CopySid (MAX_SID_LEN, saved_psid, psid);
}
return FALSE;
}
char *pwinname; /* User's name as far as Windows knows it */
char *puserprof; /* User profile */
PSID psid; /* buffer for user's SID */
- PSID orig_psid; /* Remains intact even after impersonation */
+ PSID saved_psid; /* Remains intact even after impersonation */
public:
- __uid32_t orig_uid; /* Remains intact even after impersonation */
- __gid32_t orig_gid; /* Ditto */
+ __uid32_t saved_uid; /* Remains intact even after impersonation */
+ __gid32_t saved_gid; /* Ditto */
__uid32_t real_uid; /* Remains intact on seteuid, replaced by setuid */
__gid32_t real_gid; /* Ditto */
user_groups groups; /* Primary and supp SIDs */
I've removed the constructor entirely. Please reinstate this f this
situation ever changes.
cygheap_user () : pname (NULL), plogsrv (NULL), pdomain (NULL),
- homedrive (NULL), homepath (NULL), psid (NULL),
+ homedrive (NULL), homepath (NULL),
token (INVALID_HANDLE_VALUE) {}
*/
return (p == almost_null) ? NULL : p;
}
BOOL set_sid (PSID new_sid);
- BOOL set_orig_sid ();
+ BOOL set_saved_sid ();
PSID sid () const { return psid; }
- PSID orig_sid () const { return orig_psid; }
+ PSID saved_sid () const { return saved_psid; }
const char *ontherange (homebodies what, struct passwd * = NULL);
bool issetuid () const { return current_token != INVALID_HANDLE_VALUE; }
HANDLE token () { return current_token; }
if (!AddAccessAllowedAce (acl, ACL_REVISION,
GENERIC_ALL, sid1))
debug_printf ("AddAccessAllowedAce(sid1) %E");
- if (original && (psid = cygheap->user.orig_sid ())
+ if (original && (psid = cygheap->user.saved_sid ())
&& psid != sid1 && psid != well_known_system_sid)
if (!AddAccessAllowedAce (acl, ACL_REVISION,
GENERIC_ALL, psid))
/* When ruid != euid we create the new process under the current original
account and impersonate in child, this way maintaining the different
effective vs. real ids.
- FIXME: If ruid != euid and ruid != orig_uid we currently give
+ FIXME: If ruid != euid and ruid != saved_uid we currently give
up on ruid. The new process will have ruid == euid. */
if (!cygheap->user.issetuid ()
- || (cygheap->user.orig_uid == cygheap->user.real_uid
- && cygheap->user.orig_gid == cygheap->user.real_gid
+ || (cygheap->user.saved_uid == cygheap->user.real_uid
+ && cygheap->user.saved_gid == cygheap->user.real_gid
&& !cygheap->user.groups.issetgroups ()))
{
PSECURITY_ATTRIBUTES sec_attribs = sec_user_nih (sa_buf);
/* Conditions must match those in spawn to allow starting child
processes with ruid != euid and rgid != egid. */
else if (cygheap->user.issetuid ()
- && cygheap->user.orig_uid == cygheap->user.real_uid
- && cygheap->user.orig_gid == cygheap->user.real_gid
+ && cygheap->user.saved_uid == cygheap->user.real_uid
+ && cygheap->user.saved_gid == cygheap->user.real_gid
&& !cygheap->user.groups.issetgroups ())
{
cygheap->user.reimpersonate ();
else
cygheap->user.close_impersonation_tokens ();
- cygheap->user.orig_uid = cygheap->user.real_uid = myself->uid;
- cygheap->user.orig_gid = cygheap->user.real_gid = myself->gid;
+ cygheap->user.saved_uid = cygheap->user.real_uid = myself->uid;
+ cygheap->user.saved_gid = cygheap->user.real_gid = myself->gid;
cygheap->user.external_token = INVALID_HANDLE_VALUE;
cygheap->user.internal_token = INVALID_HANDLE_VALUE;
cygheap->user.current_token = INVALID_HANDLE_VALUE;
- cygheap->user.set_orig_sid (); /* Update the original sid */
+ cygheap->user.set_saved_sid (); /* Update the original sid */
}
extern "C" char *