From a0588fdea82ab1b5d4dbd8bf75b01b82c0879d21 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Thu, 11 Oct 2012 14:42:39 +1100 Subject: [PATCH] vfs: Fix alternative posix and no-op sys acl implementations to take a mem_ctx These were missed with the initial conversion to use a talloc context. Andrew Bartlett --- source3/lib/sysacls.c | 59 +++++++++++++++++++++++++--------------- source3/modules/vfs_aixacl.c | 12 ++++---- source3/modules/vfs_irixacl.c | 8 ++++-- source3/modules/vfs_solarisacl.c | 2 +- 4 files changed, 50 insertions(+), 31 deletions(-) diff --git a/source3/lib/sysacls.c b/source3/lib/sysacls.c index 22454910309..d77b2a6822b 100644 --- a/source3/lib/sysacls.c +++ b/source3/lib/sysacls.c @@ -395,14 +395,16 @@ int sys_acl_delete_def_file(vfs_handle_struct *handle, #elif defined(HAVE_AIX_ACLS) SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, - const char *path_p, SMB_ACL_TYPE_T type) + const char *path_p, SMB_ACL_TYPE_T type, + TALLOC_CTX *mem_ctx) { - return aixacl_sys_acl_get_file(handle, path_p, type); + return aixacl_sys_acl_get_file(handle, path_p, type, mem_ctx); } -SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp) +SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp, + TALLOC_CTX *mem_ctx) { - return aixacl_sys_acl_get_fd(handle, fsp); + return aixacl_sys_acl_get_fd(handle, fsp, mem_ctx); } int sys_acl_set_file(vfs_handle_struct *handle, @@ -426,14 +428,17 @@ int sys_acl_delete_def_file(vfs_handle_struct *handle, #elif defined(HAVE_TRU64_ACLS) SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, - const char *path_p, SMB_ACL_TYPE_T type) + const char *path_p, SMB_ACL_TYPE_T type, + TALLOC_CTX *mem_ctx) { - return tru64acl_sys_acl_get_file(handle, path_p, type); + return tru64acl_sys_acl_get_file(handle, path_p, type, + mem_ctx); } -SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp) +SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp, + TALLOC_CTX *mem_ctx) { - return tru64acl_sys_acl_get_fd(handle, fsp); + return tru64acl_sys_acl_get_fd(handle, fsp, mem_ctx); } int sys_acl_set_file(vfs_handle_struct *handle, @@ -457,14 +462,18 @@ int sys_acl_delete_def_file(vfs_handle_struct *handle, #elif defined(HAVE_SOLARIS_ACLS) || defined(HAVE_UNIXWARE_ACLS) SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, - const char *path_p, SMB_ACL_TYPE_T type) + const char *path_p, SMB_ACL_TYPE_T type, + TALLOC_CTX *mem_ctx) { - return solarisacl_sys_acl_get_file(handle, path_p, type); + return solarisacl_sys_acl_get_file(handle, path_p, type, + mem_ctx); } -SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp) +SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp, + TALLOC_CTX *mem_ctx) { - return solarisacl_sys_acl_get_fd(handle, fsp); + return solarisacl_sys_acl_get_fd(handle, fsp, + mem_ctx); } int sys_acl_set_file(vfs_handle_struct *handle, @@ -488,14 +497,16 @@ int sys_acl_delete_def_file(vfs_handle_struct *handle, #elif defined(HAVE_HPUX_ACLS) SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, - const char *path_p, SMB_ACL_TYPE_T type) + const char *path_p, SMB_ACL_TYPE_T type, + TALLOC_CTX *mem_ctx) { - return hpuxacl_sys_acl_get_file(handle, path_p, type); + return hpuxacl_sys_acl_get_file(handle, path_p, type, mem_ctx); } -SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp) +SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp, + TALLOC_CTX *mem_ctx) { - return hpuxacl_sys_acl_get_fd(handle, fsp); + return hpuxacl_sys_acl_get_fd(handle, fsp, mem_ctx); } int sys_acl_set_file(vfs_handle_struct *handle, @@ -519,14 +530,16 @@ int sys_acl_delete_def_file(vfs_handle_struct *handle, #elif defined(HAVE_IRIX_ACLS) SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, - const char *path_p, SMB_ACL_TYPE_T type) + const char *path_p, SMB_ACL_TYPE_T type, + TALLOC_CTX *mem_ctx) { - return irixacl_sys_acl_get_file(handle, path_p, type); + return irixacl_sys_acl_get_file(handle, path_p, type, mem_ctx); } -SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp) +SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp, + TALLOC_CTX *mem_ctx) { - return irixacl_sys_acl_get_fd(handle, fsp); + return irixacl_sys_acl_get_fd(handle, fsp, mem_ctx); } int sys_acl_set_file(vfs_handle_struct *handle, @@ -550,7 +563,8 @@ int sys_acl_delete_def_file(vfs_handle_struct *handle, #else /* No ACLs. */ SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, - const char *path_p, SMB_ACL_TYPE_T type) + const char *path_p, SMB_ACL_TYPE_T type, + TALLOC_CTX *mem_ctx) { #ifdef ENOTSUP errno = ENOTSUP; @@ -560,7 +574,8 @@ SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, return NULL; } -SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp) +SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp, + TALLOC_CTX *mem_ctx) { #ifdef ENOTSUP errno = ENOTSUP; diff --git a/source3/modules/vfs_aixacl.c b/source3/modules/vfs_aixacl.c index 25d9089ba5c..459ea6f2979 100644 --- a/source3/modules/vfs_aixacl.c +++ b/source3/modules/vfs_aixacl.c @@ -23,8 +23,9 @@ #include "vfs_aixacl_util.h" SMB_ACL_T aixacl_sys_acl_get_file(vfs_handle_struct *handle, - const char *path_p, - SMB_ACL_TYPE_T type) + const char *path_p, + SMB_ACL_TYPE_T type, + TALLOC_CTX *mem_ctx) { struct acl *file_acl = (struct acl *)NULL; struct smb_acl_t *result = (struct smb_acl_t *)NULL; @@ -71,7 +72,7 @@ SMB_ACL_T aixacl_sys_acl_get_file(vfs_handle_struct *handle, DEBUG(10,("Got facl and returned it\n")); - result = aixacl_to_smbacl(file_acl); + result = aixacl_to_smbacl(file_acl, mem_ctx); SAFE_FREE(file_acl); return result; @@ -80,7 +81,8 @@ SMB_ACL_T aixacl_sys_acl_get_file(vfs_handle_struct *handle, } SMB_ACL_T aixacl_sys_acl_get_fd(vfs_handle_struct *handle, - files_struct *fsp) + files_struct *fsp, + TALLOC_CTX *mem_ctx) { struct acl *file_acl = (struct acl *)NULL; @@ -122,7 +124,7 @@ SMB_ACL_T aixacl_sys_acl_get_fd(vfs_handle_struct *handle, DEBUG(10,("Got facl and returned it\n")); - result = aixacl_to_smbacl(file_acl); + result = aixacl_to_smbacl(file_acl, mem_ctx); SAFE_FREE(file_acl); return result; diff --git a/source3/modules/vfs_irixacl.c b/source3/modules/vfs_irixacl.c index b3972246b9a..78484fc7f81 100644 --- a/source3/modules/vfs_irixacl.c +++ b/source3/modules/vfs_irixacl.c @@ -28,15 +28,17 @@ /* public functions - the api */ SMB_ACL_T irixacl_sys_acl_get_file(vfs_handle_struct *handle, - const char *path_p, - SMB_ACL_TYPE_T type) + const char *path_p, + SMB_ACL_TYPE_T type, + TALLOC_CTX *mem_ctx) { errno = ENOTSUP; return NULL; } SMB_ACL_T irixacl_sys_acl_get_fd(vfs_handle_struct *handle, - files_struct *fsp) + files_struct *fsp, + TALLOC_CTX *mem_ctx) { errno = ENOTSUP; return NULL; diff --git a/source3/modules/vfs_solarisacl.c b/source3/modules/vfs_solarisacl.c index a5f787f4941..dd5fe82cfa9 100644 --- a/source3/modules/vfs_solarisacl.c +++ b/source3/modules/vfs_solarisacl.c @@ -120,7 +120,7 @@ SMB_ACL_T solarisacl_sys_acl_get_fd(vfs_handle_struct *handle, * access acl. So we need to filter this out here. */ result = solaris_acl_to_smb_acl(solaris_acl, count, - SMB_ACL_TYPE_ACCESS); + SMB_ACL_TYPE_ACCESS, mem_ctx); if (result == NULL) { DEBUG(10, ("conversion solaris_acl -> smb_acl failed (%s).\n", strerror(errno))); -- 2.11.4.GIT