diff options
author | Christopher Faylor <me@cgf.cx> | 2002-06-11 20:06:16 +0400 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2002-06-11 20:06:16 +0400 |
commit | 077d8b23c867d95ca8742fdb9102a4450ea6e397 (patch) | |
tree | 07b318e9401c1dc3487620c57699819379d0e55d /winsup/cygwin | |
parent | 2fbf4a7f3604268f163f040318f1b7a0b1bbb5e0 (diff) |
* spawn.cc (spawn_guts): More hToken removal cleanup.
Diffstat (limited to 'winsup/cygwin')
-rw-r--r-- | winsup/cygwin/ChangeLog | 4 | ||||
-rw-r--r-- | winsup/cygwin/spawn.cc | 9 | ||||
-rw-r--r-- | winsup/cygwin/syscalls.cc | 34 | ||||
-rw-r--r-- | winsup/cygwin/thread.h | 14 |
4 files changed, 30 insertions, 31 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index f21312dc5..ae54ce676 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,7 @@ +2002-06-11 Christopher Faylor <cgf@redhat.com> + + * spawn.cc (spawn_guts): More hToken removal cleanup. + 2002-06-09 Pierre Humblet <pierre.humblet@ieee.org> * spawn.cc (spawn_guts): Define sec_attribs and call sec_user_nih() diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index c1934b17a..12e82a64d 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -654,10 +654,7 @@ spawn_guts (const char * prog_arg, const char *const *argv, since it's value is needed by `sec_user'. */ PSECURITY_ATTRIBUTES sec_attribs = sec_user_nih (sa_buf, sid); - /* Remove impersonation */ - if (cygheap->user.impersonated - && cygheap->user.token != INVALID_HANDLE_VALUE) - RevertToSelf (); + RevertToSelf (); /* Load users registry hive. */ load_registry_hive (sid); @@ -694,9 +691,7 @@ spawn_guts (const char * prog_arg, const char *const *argv, &pi); /* Restore impersonation. In case of _P_OVERLAY this isn't allowed since it would overwrite child data. */ - if (mode != _P_OVERLAY - && cygheap->user.impersonated - && cygheap->user.token != INVALID_HANDLE_VALUE) + if (mode != _P_OVERLAY) ImpersonateLoggedOnUser (cygheap->user.token); } diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 964b82ec7..f9d9c94cb 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -1189,45 +1189,45 @@ access (const char *fn, int flags) { if (st.st_uid == myself->uid) { - if (! (st.st_mode & S_IRUSR)) + if (!(st.st_mode & S_IRUSR)) goto done; } else if (st.st_gid == myself->gid) { - if (! (st.st_mode & S_IRGRP)) + if (!(st.st_mode & S_IRGRP)) goto done; } - else if (! (st.st_mode & S_IROTH)) + else if (!(st.st_mode & S_IROTH)) goto done; } if (flags & W_OK) { if (st.st_uid == myself->uid) { - if (! (st.st_mode & S_IWUSR)) + if (!(st.st_mode & S_IWUSR)) goto done; } else if (st.st_gid == myself->gid) { - if (! (st.st_mode & S_IWGRP)) + if (!(st.st_mode & S_IWGRP)) goto done; } - else if (! (st.st_mode & S_IWOTH)) + else if (!(st.st_mode & S_IWOTH)) goto done; } if (flags & X_OK) { if (st.st_uid == myself->uid) { - if (! (st.st_mode & S_IXUSR)) + if (!(st.st_mode & S_IXUSR)) goto done; } else if (st.st_gid == myself->gid) { - if (! (st.st_mode & S_IXGRP)) + if (!(st.st_mode & S_IXGRP)) goto done; } - else if (! (st.st_mode & S_IXOTH)) + else if (!(st.st_mode & S_IXOTH)) goto done; } r = 0; @@ -2006,7 +2006,7 @@ seteuid32 (__uid32_t uid) if (process_ok) { if (cygheap->user.token == INVALID_HANDLE_VALUE || - ! cygheap->user.impersonated ) + !cygheap->user.impersonated) { CloseHandle (ptok); return 0; /* No change */ @@ -2025,12 +2025,12 @@ seteuid32 (__uid32_t uid) { /* Return if current token is valid */ if (cygheap->user.impersonated) - { - CloseHandle (ptok); - if (!ImpersonateLoggedOnUser (cygheap->user.token)) - system_printf ("Impersonating in seteuid failed: %E"); - return 0; /* No change */ - } + { + CloseHandle (ptok); + if (!ImpersonateLoggedOnUser (cygheap->user.token)) + system_printf ("Impersonating in seteuid failed: %E"); + return 0; /* No change */ + } } else cygheap->user.token = INVALID_HANDLE_VALUE; } @@ -2076,7 +2076,7 @@ seteuid32 (__uid32_t uid) goto failed; } /* If using the token, set info and impersonate */ - if (! process_ok ) + if (!process_ok) { /* If the token was explicitly created, all information has already been set correctly. */ diff --git a/winsup/cygwin/thread.h b/winsup/cygwin/thread.h index 6c28abcbb..0d31e02fd 100644 --- a/winsup/cygwin/thread.h +++ b/winsup/cygwin/thread.h @@ -302,7 +302,7 @@ private: friend void __pthread_exit (void *value_ptr); friend int __pthread_join (pthread_t * thread, void **return_val); friend int __pthread_detach (pthread_t * thread); - + void pop_all_cleanup_handlers (void); }; @@ -395,12 +395,12 @@ public: void Init (int); void fixup_after_fork (void); - MTinterface ():reent_index (0), indexallocated (0), threadcount (1) - { - pthread_prepare = NULL; - pthread_child = NULL; - pthread_parent = NULL; - } + MTinterface ():reent_index (0), indexallocated (0), threadcount (1) + { + pthread_prepare = NULL; + pthread_child = NULL; + pthread_parent = NULL; + } }; void __pthread_atforkprepare(void); |