]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
acl_common: Pass get_acl_blob_fn as a pointer to get_nt_acl_internal
authorVolker Lendecke <vl@samba.org>
Fri, 18 Aug 2017 11:46:14 +0000 (13:46 +0200)
committerJeremy Allison <jra@samba.org>
Wed, 23 Aug 2017 23:46:07 +0000 (01:46 +0200)
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/modules/vfs_acl_common.c

index 6abf1e312fb02555c2ba7e48b45ad6d4a8f65997..9638e618c17a38caea1b0cf59d3fa875cad0b624 100644 (file)
@@ -854,12 +854,18 @@ static NTSTATUS stat_fsp_or_smb_fname(vfs_handle_struct *handle,
  filesystem sd.
 *******************************************************************/
 
-static NTSTATUS get_nt_acl_internal(vfs_handle_struct *handle,
+static NTSTATUS get_nt_acl_internal(
+       NTSTATUS (*get_acl_blob_fn)(TALLOC_CTX *ctx,
+                                   vfs_handle_struct *handle,
                                    files_struct *fsp,
-                                   const struct smb_filename *smb_fname_in,
-                                   uint32_t security_info,
-                                   TALLOC_CTX *mem_ctx,
-                                   struct security_descriptor **ppdesc)
+                                   const struct smb_filename *smb_fname,
+                                   DATA_BLOB *pblob),
+       vfs_handle_struct *handle,
+       files_struct *fsp,
+       const struct smb_filename *smb_fname_in,
+       uint32_t security_info,
+       TALLOC_CTX *mem_ctx,
+       struct security_descriptor **ppdesc)
 {
        DATA_BLOB blob = data_blob_null;
        NTSTATUS status;
@@ -880,7 +886,7 @@ static NTSTATUS get_nt_acl_internal(vfs_handle_struct *handle,
 
        DBG_DEBUG("name=%s\n", smb_fname->base_name);
 
-       status = get_acl_blob(mem_ctx, handle, fsp, smb_fname, &blob);
+       status = get_acl_blob_fn(mem_ctx, handle, fsp, smb_fname, &blob);
        if (NT_STATUS_IS_OK(status)) {
                status = validate_nt_acl_blob(mem_ctx,
                                              handle,
@@ -1026,8 +1032,8 @@ static NTSTATUS fget_nt_acl_common(vfs_handle_struct *handle,
                                   TALLOC_CTX *mem_ctx,
                                   struct security_descriptor **ppdesc)
 {
-       return get_nt_acl_internal(handle, fsp,
-                                  NULL, security_info, mem_ctx, ppdesc);
+       return get_nt_acl_internal(get_acl_blob, handle, fsp, NULL,
+                                  security_info, mem_ctx, ppdesc);
 }
 
 /*********************************************************************
@@ -1040,12 +1046,8 @@ static NTSTATUS get_nt_acl_common(vfs_handle_struct *handle,
                                  TALLOC_CTX *mem_ctx,
                                  struct security_descriptor **ppdesc)
 {
-       return get_nt_acl_internal(handle,
-                               NULL,
-                               smb_fname,
-                               security_info,
-                               mem_ctx,
-                               ppdesc);
+       return get_nt_acl_internal(get_acl_blob, handle, NULL, smb_fname,
+                                  security_info, mem_ctx, ppdesc);
 }
 
 /*********************************************************************
@@ -1146,7 +1148,7 @@ static NTSTATUS fset_nt_acl_common(vfs_handle_struct *handle, files_struct *fsp,
                        discard_const_p(struct security_descriptor, orig_psd));
        }
 
-       status = get_nt_acl_internal(handle, fsp,
+       status = get_nt_acl_internal(get_acl_blob, handle, fsp,
                        NULL,
                        SECINFO_OWNER|SECINFO_GROUP|SECINFO_DACL|SECINFO_SACL,
                                     frame,