diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2012-02-02 13:58:20 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2012-02-02 13:58:20 +0000 |
commit | b2ec6677eda5e44ee3d34df14a60dbee28a0e406 (patch) | |
tree | 4a08bc3cf36d0016402f911656c2602f7a54c823 /winsup/cygwin/autoload.cc | |
parent | 002a1b18e6857dbc4ef29c0d52ba9cc0106e8de1 (diff) | |
download | cygnal-b2ec6677eda5e44ee3d34df14a60dbee28a0e406.tar.gz cygnal-b2ec6677eda5e44ee3d34df14a60dbee28a0e406.tar.bz2 cygnal-b2ec6677eda5e44ee3d34df14a60dbee28a0e406.zip |
Fix memory and handle leaks due to fdopendir:
* dir.cc (closedir): Call global close instead of just releasing the
fhandler.
* fhandler_disk_file.cc (fhandler_disk_file::closedir): Don't close
fhandler handle here, rely on global closedir doing the right thing.
* fhandler_registry.cc (fhandler_registry::readdir): Also delete
d_hash when closing registry key.
(fhandler_registry::rewinddir): Ditto.
Avoid infinite recursion in VirtualStore under UAC:
* fhandler_registry.cc (VIRT_CLASSES_KEY_PREFIX): Define.
(VIRT_CLASSES_KEY_SUFFIX): Ditto.
(VIRT_CLASSES_KEY): Ditto.
(VIRT_CLASSES_LINKTGT): Ditto.
(fhandler_registry::exists): Return virt_symlink as file type if
this is a Classes key under the VirtualStore.
(fhandler_registry::fstat): Handle virt_symlink.
(fhandler_registry::readdir): Return DT_LNK as d_type if this is a
Classes key under the VirtualStore.
(fhandler_registry::fill_filebuf): Handle Classes symlink.
Handle user impersonation in /proc/registry access:
* autoload.cc (RegOpenUserClassesRoot): Define.
(RegOpenCurrentUser): Define.
* fhandler_registry.cc (RegOpenUserClassesRoot): Declare function
missing in w32api.
(RegOpenCurrentUser): Ditto.
(fetch_hkey): New function.
(fhandler_registry::open): Call fetch_hkey to get root registry key.
(open_key): Ditto.
Diffstat (limited to 'winsup/cygwin/autoload.cc')
-rw-r--r-- | winsup/cygwin/autoload.cc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/winsup/cygwin/autoload.cc b/winsup/cygwin/autoload.cc index e4827c22f..442a2e695 100644 --- a/winsup/cygwin/autoload.cc +++ b/winsup/cygwin/autoload.cc @@ -1,7 +1,7 @@ /* autoload.cc: all dynamic load stuff. Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, - 2009, 2010, 2011 Red Hat, Inc. + 2009, 2010, 2011, 2012 Red Hat, Inc. This file is part of Cygwin. @@ -367,6 +367,8 @@ LoadDLLfunc (LsaOpenPolicy, 16, advapi32) LoadDLLfunc (LsaQueryInformationPolicy, 12, advapi32) LoadDLLfunc (LsaRetrievePrivateData, 12, advapi32) LoadDLLfunc (LsaStorePrivateData, 12, advapi32) +LoadDLLfunc (RegOpenUserClassesRoot, 16, advapi32) +LoadDLLfunc (RegOpenCurrentUser, 8, advapi32) LoadDLLfunc (RegCloseKey, 4, advapi32) LoadDLLfunc (RegCreateKeyExW, 36, advapi32) LoadDLLfunc (RegEnumKeyExW, 32, advapi32) |