[PATCH] First step in changing VFS interfaces from const char * to const struct smb_filename *

Ralph Boehme rb at sernet.de
Sun Feb 14 20:40:16 UTC 2016


On Sat, Feb 13, 2016 at 08:42:46AM +0100, Ralph Boehme wrote:
> On Fri, Feb 12, 2016 at 01:20:36PM -0800, Jeremy Allison wrote:
> > Works fine here in testing. Please review and
> > push if happy. Once this is in I'll post follow-ups
> > for the other 'const char *' VFS interfaces.
> 
> pushed!

autobuild failed in vfs_snapper. Fixup for the original patch
attached. Feel free to fixup and push with my reviewed-by.

-Ralph

-- 
SerNet GmbH, Bahnhofsallee 1b, 37081 Göttingen
phone: +49-551-370000-0, fax: +49-551-370000-9
AG Göttingen, HRB 2816, GF: Dr. Johannes Loxen
http://www.sernet.de,mailto:kontakt@sernet.de
-------------- next part --------------
From 16ada2777b12966cd55f265b615b590ae8ae6a5e Mon Sep 17 00:00:00 2001
From: Ralph Boehme <slow at samba.org>
Date: Sun, 14 Feb 2016 21:36:15 +0100
Subject: [PATCH] FIXUP: s3: VFS: Modify SMB_VFS_GET_NT_ACL to take a const
 struct smb_filename *

Signed-off-by: Ralph Boehme <slow at samba.org>
---
 source3/modules/vfs_snapper.c | 33 +++++++++++++++++++++++++++------
 1 file changed, 27 insertions(+), 6 deletions(-)

diff --git a/source3/modules/vfs_snapper.c b/source3/modules/vfs_snapper.c
index cd7904c..970373c 100644
--- a/source3/modules/vfs_snapper.c
+++ b/source3/modules/vfs_snapper.c
@@ -2415,6 +2415,7 @@ static NTSTATUS snapper_gmt_fget_nt_acl(vfs_handle_struct *handle,
 	char *stripped;
 	NTSTATUS status;
 	char *conv;
+	struct smb_filename *smb_fname = NULL;
 
 	if (!snapper_gmt_strip_snapshot(talloc_tos(), handle,
 					fsp->fsp_name->base_name,
@@ -2431,14 +2432,24 @@ static NTSTATUS snapper_gmt_fget_nt_acl(vfs_handle_struct *handle,
 	if (conv == NULL) {
 		return map_nt_error_from_unix(errno);
 	}
-	status = SMB_VFS_NEXT_GET_NT_ACL(handle, conv, security_info,
-					 mem_ctx, ppdesc);
+
+	smb_fname = synthetic_smb_fname(talloc_tos(),
+					conv,
+					NULL,
+					NULL);
 	TALLOC_FREE(conv);
+	if (smb_fname == NULL) {
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	status = SMB_VFS_NEXT_GET_NT_ACL(handle, smb_fname, security_info,
+					 mem_ctx, ppdesc);
+	TALLOC_FREE(smb_fname);
 	return status;
 }
 
 static NTSTATUS snapper_gmt_get_nt_acl(vfs_handle_struct *handle,
-				       const char *fname,
+				       const struct smb_filename *fname,
 				       uint32_t security_info,
 				       TALLOC_CTX *mem_ctx,
 				       struct security_descriptor **ppdesc)
@@ -2447,8 +2458,9 @@ static NTSTATUS snapper_gmt_get_nt_acl(vfs_handle_struct *handle,
 	char *stripped;
 	NTSTATUS status;
 	char *conv;
+	struct smb_filename *smb_fname = NULL;
 
-	if (!snapper_gmt_strip_snapshot(talloc_tos(), handle, fname,
+	if (!snapper_gmt_strip_snapshot(talloc_tos(), handle, fname->base_name,
 					&timestamp, &stripped)) {
 		return map_nt_error_from_unix(errno);
 	}
@@ -2461,9 +2473,18 @@ static NTSTATUS snapper_gmt_get_nt_acl(vfs_handle_struct *handle,
 	if (conv == NULL) {
 		return map_nt_error_from_unix(errno);
 	}
-	status = SMB_VFS_NEXT_GET_NT_ACL(handle, conv, security_info,
-					 mem_ctx, ppdesc);
+	smb_fname = synthetic_smb_fname(talloc_tos(),
+					conv,
+					NULL,
+					NULL);
 	TALLOC_FREE(conv);
+	if (smb_fname == NULL) {
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	status = SMB_VFS_NEXT_GET_NT_ACL(handle, smb_fname, security_info,
+					 mem_ctx, ppdesc);
+	TALLOC_FREE(smb_fname);
 	return status;
 }
 
-- 
2.5.0



More information about the samba-technical mailing list