Added patch to allow to open files/directories without any access rights in order to query attributes.

This commit is contained in:
Sebastian Lackner
2015-04-03 18:36:35 +02:00
parent 70ca8ccdee
commit da14f3201a
12 changed files with 414 additions and 17 deletions

View File

@@ -1,15 +1,15 @@
From 35cc6b5ed224e27ef833bb84cea092bb65b8ab12 Mon Sep 17 00:00:00 2001
From e2337e9756c38d06661d6dabd4a04d97528c4ab1 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Thu, 7 Aug 2014 18:31:33 -0600
Subject: server: Keep a pointer to parent's fd unix_name in the closed_fd
structure.
---
server/fd.c | 38 +++++++++++++++++++++-----------------
server/fd.c | 38 +++++++++++++++++++++-----------------
1 file changed, 21 insertions(+), 17 deletions(-)
diff --git a/server/fd.c b/server/fd.c
index e3b722c..b022a3c 100644
index 9a4aac4..cd62cc8 100644
--- a/server/fd.c
+++ b/server/fd.c
@@ -164,7 +164,8 @@ struct closed_fd
@@ -124,8 +124,8 @@ index e3b722c..b022a3c 100644
- const char *unlink_name = "";
int root_fd = -1;
int rw_mode;
@@ -1752,8 +1756,7 @@ struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode,
int do_chmod = 0;
@@ -1753,8 +1757,7 @@ struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode,
if (!(fd = alloc_fd_object())) return NULL;
fd->options = options;
@@ -135,17 +135,17 @@ index e3b722c..b022a3c 100644
{
release_object( fd );
return NULL;
@@ -1810,7 +1813,8 @@ struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode,
@@ -1834,7 +1837,8 @@ struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode,
}
closed_fd->unix_fd = fd->unix_fd;
- closed_fd->unlink[0] = 0;
+ closed_fd->unlink = 0;
+ closed_fd->unix_name = fd->unix_name;
fstat( fd->unix_fd, &st );
*mode = st.st_mode;
@@ -1851,7 +1855,7 @@ struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode,
if (do_chmod) fchmod( fd->unix_fd, *mode );
fstat( fd->unix_fd, &st );
@@ -1877,7 +1881,7 @@ struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode,
set_error( err );
return NULL;
}
@@ -154,7 +154,7 @@ index e3b722c..b022a3c 100644
if (flags & O_TRUNC)
{
if (S_ISDIR(st.st_mode))
@@ -1870,7 +1874,7 @@ struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode,
@@ -1896,7 +1900,7 @@ struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode,
set_error( STATUS_NOT_A_DIRECTORY );
goto error;
}
@@ -164,5 +164,5 @@ index e3b722c..b022a3c 100644
set_error( STATUS_INVALID_PARAMETER );
goto error;
--
1.7.9.5
2.3.3

View File

@@ -1 +1,2 @@
Fixes: [30397] Support for NtSetInformationFile class FileDispositionInformation
Depends: server-File_Permissions