summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/fhandler.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2006-10-21 11:05:32 +0000
committerCorinna Vinschen <corinna@vinschen.de>2006-10-21 11:05:32 +0000
commit1b4153db7433184f220941a0954a521bbb01ec04 (patch)
tree6c598d3f46537e016212df4a546f48bced54bdc3 /winsup/cygwin/fhandler.cc
parent9367c0dcff74e0462e4f5d4fd9886cc1a19b04c5 (diff)
downloadcygnal-1b4153db7433184f220941a0954a521bbb01ec04.tar.gz
cygnal-1b4153db7433184f220941a0954a521bbb01ec04.tar.bz2
cygnal-1b4153db7433184f220941a0954a521bbb01ec04.zip
* fhandler.cc (fhandler_base::fhaccess): Call check_registry_access
for registry keys/values if ntsec is on. * security.cc (check_access): New static function derived from check_file_access, but object type agnostic. (check_file_access): Only do file specific stuff. Call check_access. (check_registry_access): New access check function for registry keys/ values. * security.h (check_registry_access): Declare.
Diffstat (limited to 'winsup/cygwin/fhandler.cc')
-rw-r--r--winsup/cygwin/fhandler.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc
index 672b434e5..2933a1712 100644
--- a/winsup/cygwin/fhandler.cc
+++ b/winsup/cygwin/fhandler.cc
@@ -388,6 +388,12 @@ 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))
+ {
+ res = check_registry_access (get_handle (), flags);
+ close ();
+ return res;
+ }
struct __stat64 st;
if (fstat (&st))