summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/smbd/open.c4
-rw-r--r--source3/smbd/vfs-wrap.c20
-rw-r--r--source3/smbd/vfs.c6
3 files changed, 17 insertions, 13 deletions
diff --git a/source3/smbd/open.c b/source3/smbd/open.c
index 412a0dfc50..959439a1b2 100644
--- a/source3/smbd/open.c
+++ b/source3/smbd/open.c
@@ -1146,7 +1146,7 @@ flags=0x%X flags2=0x%X mode=0%o returned %d\n",
* selected.
*/
- if (!file_existed && !def_acl && (conn->vfs.ops.fchmod_acl != NULL)) {
+ if (!file_existed && !def_acl) {
int saved_errno = errno; /* We might get ENOSYS in the next call.. */
@@ -1159,7 +1159,7 @@ flags=0x%X flags2=0x%X mode=0%o returned %d\n",
/* Attributes need changing. File already existed. */
- if (conn->vfs.ops.fchmod_acl != NULL) {
+ {
int saved_errno = errno; /* We might get ENOSYS in the next call.. */
ret = VFS_FCHMOD_ACL(fsp, fsp->fd, new_mode);
diff --git a/source3/smbd/vfs-wrap.c b/source3/smbd/vfs-wrap.c
index dd8aad1170..e170effd4e 100644
--- a/source3/smbd/vfs-wrap.c
+++ b/source3/smbd/vfs-wrap.c
@@ -93,10 +93,8 @@ int vfswrap_mkdir(vfs_handle_struct *handle, connection_struct *conn, const char
* mess up any inherited ACL bits that were set. JRA.
*/
int saved_errno = errno; /* We may get ENOSYS */
- if (conn->vfs.ops.chmod_acl != NULL) {
- if ((VFS_CHMOD_ACL(conn, path, mode) == -1) && (errno == ENOSYS))
- errno = saved_errno;
- }
+ if ((VFS_CHMOD_ACL(conn, path, mode) == -1) && (errno == ENOSYS))
+ errno = saved_errno;
}
END_PROFILE(syscall_mkdir);
@@ -281,7 +279,7 @@ int vfswrap_chmod(vfs_handle_struct *handle, connection_struct *conn, const char
*/
- if (conn->vfs.ops.chmod_acl != NULL) {
+ {
int saved_errno = errno; /* We might get ENOSYS */
if ((result = VFS_CHMOD_ACL(conn, path, mode)) == 0) {
END_PROFILE(syscall_chmod);
@@ -309,7 +307,7 @@ int vfswrap_fchmod(vfs_handle_struct *handle, files_struct *fsp, int fd, mode_t
* group owner bits directly. JRA.
*/
- if (vfs_ops->ops.fchmod_acl != NULL) {
+ {
int saved_errno = errno; /* We might get ENOSYS */
if ((result = VFS_FCHMOD_ACL(fsp, fd, mode)) == 0) {
END_PROFILE(syscall_chmod);
@@ -621,22 +619,32 @@ BOOL vfswrap_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, const char
int vfswrap_chmod_acl(vfs_handle_struct *handle, connection_struct *conn, const char *name, mode_t mode)
{
+#ifdef HAVE_NO_ACL
+ errno = ENOSYS;
+ return -1;
+#else
int result;
START_PROFILE(chmod_acl);
result = chmod_acl(conn, name, mode);
END_PROFILE(chmod_acl);
return result;
+#endif
}
int vfswrap_fchmod_acl(vfs_handle_struct *handle, files_struct *fsp, int fd, mode_t mode)
{
+#ifdef HAVE_NO_ACL
+ errno = ENOSYS;
+ return -1;
+#else
int result;
START_PROFILE(fchmod_acl);
result = fchmod_acl(fsp, fd, mode);
END_PROFILE(fchmod_acl);
return result;
+#endif
}
int vfswrap_sys_acl_get_entry(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_T theacl, int entry_id, SMB_ACL_ENTRY_T *entry_p)
diff --git a/source3/smbd/vfs.c b/source3/smbd/vfs.c
index 92342a673b..9f37622c8c 100644
--- a/source3/smbd/vfs.c
+++ b/source3/smbd/vfs.c
@@ -100,13 +100,9 @@ static struct vfs_ops default_vfs = {
vfswrap_set_nt_acl,
/* POSIX ACL operations. */
-#if defined(HAVE_NO_ACLS)
- NULL,
- NULL,
-#else
vfswrap_chmod_acl,
vfswrap_fchmod_acl,
-#endif
+
vfswrap_sys_acl_get_entry,
vfswrap_sys_acl_get_tag_type,
vfswrap_sys_acl_get_permset,