summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Lendecke <vlendec@samba.org>2006-12-24 16:37:22 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:16:43 -0500
commite8e5c17f2e5c09dff5b2acaaab9a9659b9242c6f (patch)
treeb949938667fe64aecdefe533f191a55359c3b699
parenta67757ef9c6ed421341fe948d93aff94991da053 (diff)
downloadsamba-e8e5c17f2e5c09dff5b2acaaab9a9659b9242c6f.tar.gz
samba-e8e5c17f2e5c09dff5b2acaaab9a9659b9242c6f.tar.bz2
samba-e8e5c17f2e5c09dff5b2acaaab9a9659b9242c6f.zip
r20344: Move the calls to inherit_access_acls and change_owner_to_parent together.
Jeremy, I'm 100% sure you watch me closely here, I count on you :-) Volker (This used to be commit 02f85265f21607c950639da33bc8fe5d5ffd3cf9)
-rw-r--r--source3/smbd/open.c30
1 files changed, 16 insertions, 14 deletions
diff --git a/source3/smbd/open.c b/source3/smbd/open.c
index c3df5acde3..59cd8030af 100644
--- a/source3/smbd/open.c
+++ b/source3/smbd/open.c
@@ -293,11 +293,17 @@ static NTSTATUS open_file(files_struct *fsp,
return map_nt_error_from_unix(errno);
}
- /* Inherit the ACL if the file was created. */
- if ((local_flags & O_CREAT)
- && !file_existed
- && lp_inherit_perms(SNUM(conn))) {
- inherit_access_acl(conn, fname, unx_mode);
+ if ((local_flags & O_CREAT) && !file_existed) {
+
+ /* Inherit the ACL if required */
+ if (lp_inherit_perms(SNUM(conn))) {
+ inherit_access_acl(conn, fname, unx_mode);
+ }
+
+ /* Change the owner if required. */
+ if (lp_inherit_owner(SNUM(conn))) {
+ change_fd_owner_to_parent(conn, fsp);
+ }
}
} else {
@@ -1702,10 +1708,6 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
}
} else {
info = FILE_WAS_CREATED;
- /* Change the owner if required. */
- if (lp_inherit_owner(SNUM(conn))) {
- change_fd_owner_to_parent(conn, fsp);
- }
}
if (pinfo) {
@@ -1913,6 +1915,11 @@ static NTSTATUS mkdir_internal(connection_struct *conn, const char *name,
psbuf->st_mode | (mode & ~psbuf->st_mode));
}
+ /* Change the owner if required. */
+ if (lp_inherit_owner(SNUM(conn))) {
+ change_owner_to_parent(conn, name, psbuf);
+ }
+
return NT_STATUS_OK;
}
@@ -2086,11 +2093,6 @@ NTSTATUS open_directory(connection_struct *conn,
TALLOC_FREE(lck);
- /* Change the owner if required. */
- if ((info == FILE_WAS_CREATED) && lp_inherit_owner(SNUM(conn))) {
- change_owner_to_parent(conn, fsp->fsp_name, psbuf);
- }
-
if (pinfo) {
*pinfo = info;
}