[newlib-cygwin] Cywin: user profile: unload impersonation user profile on exit

Corinna Vinschen corinna@sourceware.org
Sat Feb 23 20:06:00 GMT 2019


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=bcb33dc4f0552e749dcb6c44e1ef7815b5db75a1

commit bcb33dc4f0552e749dcb6c44e1ef7815b5db75a1
Author: Corinna Vinschen <corinna@vinschen.de>
Date:   Sat Feb 23 21:06:12 2019 +0100

    Cywin: user profile: unload impersonation user profile on exit
    
    Signed-off-by: Corinna Vinschen <corinna@vinschen.de>

Diff:
---
 winsup/cygwin/cygheap.h | 5 +++++
 winsup/cygwin/pinfo.cc  | 1 +
 2 files changed, 6 insertions(+)

diff --git a/winsup/cygwin/cygheap.h b/winsup/cygwin/cygheap.h
index 5c5e3cd..4d9feb0 100644
--- a/winsup/cygwin/cygheap.h
+++ b/winsup/cygwin/cygheap.h
@@ -193,6 +193,11 @@ public:
   {
     return effec_cygsid.string (buf);
   }
+  void exit ()
+  {
+    if (imp_profile_token && imp_profile)
+      unload_user_profile (imp_profile_token, imp_profile);
+  }
 
   const char __reg3 *test_uid (char *&, const char *, size_t);
 };
diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc
index 064299e..e29c007 100644
--- a/winsup/cygwin/pinfo.cc
+++ b/winsup/cygwin/pinfo.cc
@@ -224,6 +224,7 @@ pinfo::exit (DWORD n)
     exitcode = ((exitcode & 0xff) << 8) | ((exitcode >> 8) & 0xff);
   sigproc_printf ("Calling dlls.cleanup_forkables n %y, exitcode %y", n, exitcode);
   dlls.cleanup_forkables ();
+  cygheap->user.exit ();
   sigproc_printf ("Calling ExitProcess n %y, exitcode %y", n, exitcode);
   if (!TerminateProcess (GetCurrentProcess (), exitcode))
     system_printf ("TerminateProcess failed, %E");



More information about the Cygwin-cvs mailing list