summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2001-10-31 12:03:45 +0000
committerCorinna Vinschen <corinna@vinschen.de>2001-10-31 12:03:45 +0000
commit928eca7a5814489a64bdba00bf37bda876761d45 (patch)
treed16ee1caf02320286d753442428775c1ebe56963
parent34397675dec74a954e53c306e075dd95bf6f88c5 (diff)
downloadcygnal-928eca7a5814489a64bdba00bf37bda876761d45.tar.gz
cygnal-928eca7a5814489a64bdba00bf37bda876761d45.tar.bz2
cygnal-928eca7a5814489a64bdba00bf37bda876761d45.zip
* dtable.cc (dtable::vfork_child_dup): Revert impersonation
before duplicating fhandler.
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/dtable.cc8
2 files changed, 13 insertions, 0 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 2efb58676..bb4755071 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+2001-10-31 Corinna Vinschen <corinna@vinschen.de>
+
+ * dtable.cc (dtable::vfork_child_dup): Revert impersonation
+ before duplicating fhandler.
+
2001-10-30 Christopher Faylor <cgf@redhat.com>
* exceptions.cc (signal_exit): Weight the odds against the main thread
diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc
index 4a14712a3..b929b169e 100644
--- a/winsup/cygwin/dtable.cc
+++ b/winsup/cygwin/dtable.cc
@@ -559,6 +559,10 @@ dtable::vfork_child_dup ()
newtable = (fhandler_base **) ccalloc (HEAP_ARGV, size, sizeof (fds[0]));
int res = 1;
+ /* Remove impersonation */
+ if (cygheap->user.impersonated && cygheap->user.token != INVALID_HANDLE_VALUE)
+ RevertToSelf ();
+
for (size_t i = 0; i < size; i++)
if (not_open (i))
continue;
@@ -571,6 +575,10 @@ dtable::vfork_child_dup ()
goto out;
}
+ /* Restore impersonation */
+ if (cygheap->user.impersonated && cygheap->user.token != INVALID_HANDLE_VALUE)
+ ImpersonateLoggedOnUser (cygheap->user.token);
+
fds_on_hold = fds;
fds = newtable;