1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-08 21:18:16 +03:00

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
This commit is contained in:
Andrew Bartlett 2012-10-11 14:42:39 +11:00
parent 547a260a28
commit a0588fdea8
4 changed files with 50 additions and 31 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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)));