[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,
×tamp, &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