diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2003-09-16 09:24:52 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2003-09-16 09:24:52 +0000 |
commit | 1498189ca897347251470f3dd35e97d2f20f0f4b (patch) | |
tree | 3ac8b2cab6b9f97257bceb614d92242b30909858 /winsup/cygwin | |
parent | c429c346d826abfc951fa1c5d520e10dd56549c4 (diff) | |
download | newlib-1498189ca897347251470f3dd35e97d2f20f0f4b.zip newlib-1498189ca897347251470f3dd35e97d2f20f0f4b.tar.gz newlib-1498189ca897347251470f3dd35e97d2f20f0f4b.tar.bz2 |
* 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.
Diffstat (limited to 'winsup/cygwin')
-rw-r--r-- | winsup/cygwin/ChangeLog | 11 | ||||
-rw-r--r-- | winsup/cygwin/cygheap.cc | 9 | ||||
-rw-r--r-- | winsup/cygwin/cygheap.h | 12 | ||||
-rw-r--r-- | winsup/cygwin/sec_helper.cc | 2 | ||||
-rw-r--r-- | winsup/cygwin/spawn.cc | 6 | ||||
-rw-r--r-- | winsup/cygwin/uinfo.cc | 10 |
6 files changed, 31 insertions, 19 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 5bcc11a..c4d7923 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,14 @@ +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. diff --git a/winsup/cygwin/cygheap.cc b/winsup/cygwin/cygheap.cc index af53795..2174f1d 100644 --- a/winsup/cygwin/cygheap.cc +++ b/winsup/cygwin/cygheap.cc @@ -458,13 +458,14 @@ cygheap_user::set_sid (PSID new_sid) } 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; } diff --git a/winsup/cygwin/cygheap.h b/winsup/cygwin/cygheap.h index b3ac71e..1d05446 100644 --- a/winsup/cygwin/cygheap.h +++ b/winsup/cygwin/cygheap.h @@ -107,10 +107,10 @@ class cygheap_user 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 */ @@ -128,7 +128,7 @@ public: 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) {} */ @@ -161,9 +161,9 @@ public: 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; } diff --git a/winsup/cygwin/sec_helper.cc b/winsup/cygwin/sec_helper.cc index 70817c5..db54bc0 100644 --- a/winsup/cygwin/sec_helper.cc +++ b/winsup/cygwin/sec_helper.cc @@ -386,7 +386,7 @@ sec_acl (PACL acl, bool original, bool admins, PSID sid1, PSID sid2, DWORD acces 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)) diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index 7b05a5c..b6e126b 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -625,11 +625,11 @@ spawn_guts (const char * prog_arg, const char *const *argv, /* 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); diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc index 342c398..ff33221 100644 --- a/winsup/cygwin/uinfo.cc +++ b/winsup/cygwin/uinfo.cc @@ -128,8 +128,8 @@ uinfo_init () /* 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 (); @@ -138,12 +138,12 @@ uinfo_init () 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 * |