From 2b26c2fc410ad29dbc2e906e98845c06db79e726 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sun, 22 Oct 2006 09:38:47 +0000 Subject: [PATCH] * fhandler.cc (fhandler_base::fhaccess): Check if opening registry actually created a handle. This handles the registry root dir. * fhandler_registry.cc (fhandler_registry::open): Set io_handle in case of opening one of the predefined registry keys. --- winsup/cygwin/ChangeLog | 7 +++++++ winsup/cygwin/fhandler.cc | 3 ++- winsup/cygwin/fhandler_registry.cc | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index d82f63974..1f67f578a 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,10 @@ +2006-10-22 Corinna Vinschen + + * fhandler.cc (fhandler_base::fhaccess): Check if opening registry + actually created a handle. This handles the registry root dir. + * fhandler_registry.cc (fhandler_registry::open): Set io_handle in + case of opening one of the predefined registry keys. + 2006-10-21 Corinna Vinschen * fhandler.cc (fhandler_base::fhaccess): Call check_registry_access diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc index 2933a1712..64669da87 100644 --- a/winsup/cygwin/fhandler.cc +++ b/winsup/cygwin/fhandler.cc @@ -388,7 +388,8 @@ fhandler_base::fhaccess (int flags) res = check_file_access (get_win32_name (), flags); goto done; } - else if (get_device () == FH_REGISTRY && allow_ntsec && open (O_RDONLY, 0)) + else if (get_device () == FH_REGISTRY && allow_ntsec && open (O_RDONLY, 0) + && get_handle ()) { res = check_registry_access (get_handle (), flags); close (); diff --git a/winsup/cygwin/fhandler_registry.cc b/winsup/cygwin/fhandler_registry.cc index 57525f4bc..ecb7f7474 100644 --- a/winsup/cygwin/fhandler_registry.cc +++ b/winsup/cygwin/fhandler_registry.cc @@ -486,6 +486,7 @@ fhandler_registry::open (int flags, mode_t mode) } else { + set_io_handle (registry_keys[i]); flags |= O_DIROPEN; goto success; }