summaryrefslogtreecommitdiff
path: root/source4/ntvfs/posix/pvfs_open.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2011-12-01 13:40:49 +1100
committerAndrew Tridgell <tridge@samba.org>2011-12-01 05:14:49 +0100
commit3c4af39aa506a25fc6d6753dbe34e4e1c0dd0b43 (patch)
tree7ac56983f5a5d2d2de177cc21f056270d892334c /source4/ntvfs/posix/pvfs_open.c
parentd1274f7f6236b47a1c6aa1737b054ed521d31b67 (diff)
downloadsamba-3c4af39aa506a25fc6d6753dbe34e4e1c0dd0b43.tar.gz
samba-3c4af39aa506a25fc6d6753dbe34e4e1c0dd0b43.tar.bz2
samba-3c4af39aa506a25fc6d6753dbe34e4e1c0dd0b43.zip
s4-ntvfs: added allow_override check based on use of NT ACL
This disables the posix permission override if the calculated permissions did not come from a NT ACL. Autobuild-User: Andrew Tridgell <tridge@samba.org> Autobuild-Date: Thu Dec 1 05:14:49 CET 2011 on sn-devel-104
Diffstat (limited to 'source4/ntvfs/posix/pvfs_open.c')
-rw-r--r--source4/ntvfs/posix/pvfs_open.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/source4/ntvfs/posix/pvfs_open.c b/source4/ntvfs/posix/pvfs_open.c
index c0f55e8e73..a095f74633 100644
--- a/source4/ntvfs/posix/pvfs_open.c
+++ b/source4/ntvfs/posix/pvfs_open.c
@@ -73,7 +73,7 @@ static int pvfs_dir_handle_destructor(struct pvfs_file_handle *h)
DEBUG(0,("Warning: xattr unlink hook failed for '%s' - %s\n",
delete_path, nt_errstr(status)));
}
- if (pvfs_sys_rmdir(h->pvfs, delete_path) != 0) {
+ if (pvfs_sys_rmdir(h->pvfs, delete_path, h->name->allow_override) != 0) {
DEBUG(0,("pvfs_dir_handle_destructor: failed to rmdir '%s' - %s\n",
delete_path, strerror(errno)));
}
@@ -344,7 +344,7 @@ static NTSTATUS pvfs_open_directory(struct pvfs_state *pvfs,
uint32_t attrib = io->generic.in.file_attr | FILE_ATTRIBUTE_DIRECTORY;
mode_t mode = pvfs_fileperms(pvfs, attrib);
- if (pvfs_sys_mkdir(pvfs, name->full_name, mode) == -1) {
+ if (pvfs_sys_mkdir(pvfs, name->full_name, mode, name->allow_override) == -1) {
return pvfs_map_errno(pvfs,errno);
}
@@ -432,7 +432,7 @@ static NTSTATUS pvfs_open_directory(struct pvfs_state *pvfs,
return NT_STATUS_OK;
cleanup_delete:
- pvfs_sys_rmdir(pvfs, name->full_name);
+ pvfs_sys_rmdir(pvfs, name->full_name, name->allow_override);
return status;
}
@@ -514,7 +514,7 @@ static int pvfs_handle_destructor(struct pvfs_file_handle *h)
DEBUG(0,("Warning: xattr unlink hook failed for '%s' - %s\n",
delete_path, nt_errstr(status)));
}
- if (pvfs_sys_unlink(h->pvfs, delete_path) != 0) {
+ if (pvfs_sys_unlink(h->pvfs, delete_path, h->name->allow_override) != 0) {
DEBUG(0,("pvfs_close: failed to delete '%s' - %s\n",
delete_path, strerror(errno)));
} else {
@@ -677,7 +677,7 @@ static NTSTATUS pvfs_create_file(struct pvfs_state *pvfs,
mode = pvfs_fileperms(pvfs, attrib);
/* create the file */
- fd = pvfs_sys_open(pvfs, name->full_name, flags | O_CREAT | O_EXCL| O_NONBLOCK, mode);
+ fd = pvfs_sys_open(pvfs, name->full_name, flags | O_CREAT | O_EXCL| O_NONBLOCK, mode, name->allow_override);
if (fd == -1) {
return pvfs_map_errno(pvfs, errno);
}
@@ -856,7 +856,7 @@ static NTSTATUS pvfs_create_file(struct pvfs_state *pvfs,
cleanup_delete:
close(fd);
- pvfs_sys_unlink(pvfs, name->full_name);
+ pvfs_sys_unlink(pvfs, name->full_name, name->allow_override);
return status;
}
@@ -1549,7 +1549,7 @@ NTSTATUS pvfs_open(struct ntvfs_module_context *ntvfs,
}
/* do the actual open */
- fd = pvfs_sys_open(pvfs, f->handle->name->full_name, flags | O_NONBLOCK, 0);
+ fd = pvfs_sys_open(pvfs, f->handle->name->full_name, flags | O_NONBLOCK, 0, name->allow_override);
if (fd == -1) {
status = pvfs_map_errno(f->pvfs, errno);
@@ -1635,7 +1635,7 @@ NTSTATUS pvfs_open(struct ntvfs_module_context *ntvfs,
mode_t mode = pvfs_fileperms(pvfs, attrib);
if (f->handle->name->st.st_mode != mode &&
f->handle->name->dos.attrib != attrib &&
- pvfs_sys_fchmod(pvfs, fd, mode) == -1) {
+ pvfs_sys_fchmod(pvfs, fd, mode, name->allow_override) == -1) {
talloc_free(lck);
return pvfs_map_errno(pvfs, errno);
}