[SCM] Samba Shared Repository - branch master updated
Volker Lendecke
vlendec at samba.org
Mon Aug 26 04:15:03 MDT 2013
The branch, master has been updated
via 7614278 smbd: Simplify dropbox special case in unix_convert
from 84b8bdd Revert "Fix the erroneous masking of chmod requests via the UNIX extensions."
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 76142780fb6d69bdf6e15ea27b0436da3fa49fae
Author: Volker Lendecke <vl at samba.org>
Date: Mon Aug 19 10:26:00 2013 +0000
smbd: Simplify dropbox special case in unix_convert
EACCESS needs special treatment: If we want to create a fresh file,
return OBJECT_PATH_NOT_FOUND, so that the client will continue creating
the file. If the client wants us to open a potentially existing file,
we need to correctly return ACCESS_DENIED.
This patch makes this behaviour hopefully a bit clearer than the code
before did.
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
Autobuild-User(master): Volker Lendecke <vl at samba.org>
Autobuild-Date(master): Mon Aug 26 12:14:26 CEST 2013 on sn-devel-104
-----------------------------------------------------------------------
Summary of changes:
source3/smbd/filename.c | 29 +++++++++++++++++++++++------
1 files changed, 23 insertions(+), 6 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/smbd/filename.c b/source3/smbd/filename.c
index 4384f5a..68321ee 100644
--- a/source3/smbd/filename.c
+++ b/source3/smbd/filename.c
@@ -718,13 +718,30 @@ NTSTATUS unix_convert(TALLOC_CTX *ctx,
/*
* ENOENT/EACCESS are the only valid errors
- * here. EACCESS needs handling here for
- * "dropboxes", i.e. directories where users
- * can only put stuff with permission -wx.
+ * here.
*/
- if ((errno != 0) && (errno != ENOENT)
- && ((ucf_flags & UCF_CREATING_FILE) &&
- (errno != EACCES))) {
+
+ if (errno == EACCES) {
+ if (ucf_flags & UCF_CREATING_FILE) {
+ /*
+ * This is the dropbox
+ * behaviour. A dropbox is a
+ * directory with only -wx
+ * permissions, so
+ * get_real_filename fails
+ * with EACCESS, it needs to
+ * list the directory. We
+ * nevertheless want to allow
+ * users creating a file.
+ */
+ status = NT_STATUS_OBJECT_PATH_NOT_FOUND;
+ } else {
+ status = NT_STATUS_ACCESS_DENIED;
+ }
+ goto fail;
+ }
+
+ if ((errno != 0) && (errno != ENOENT)) {
/*
* ENOTDIR and ELOOP both map to
* NT_STATUS_OBJECT_PATH_NOT_FOUND
--
Samba Shared Repository
More information about the samba-cvs
mailing list