The branch, master has been updated
       via  a077e2a FIXUP: s3: VFS: Modify SMB_VFS_GET_NT_ACL to take a const 
struct smb_filename *
       via  616d068 s3: VFS: Modify SMB_VFS_GET_NT_ACL to take a const struct 
smb_filename * instead of const char *
      from  3330c79 tdb: eliminate deprecation warnings in python tests

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit a077e2ae62fea085f392cc32f1eb48942f5d43c7
Author: Ralph Boehme <[email protected]>
Date:   Sun Feb 14 21:36:15 2016 +0100

    FIXUP: s3: VFS: Modify SMB_VFS_GET_NT_ACL to take a const struct 
smb_filename *
    
    Signed-off-by: Ralph Boehme <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>
    
    Autobuild-User(master): Jeremy Allison <[email protected]>
    Autobuild-Date(master): Tue Feb 16 23:26:48 CET 2016 on sn-devel-144

commit 616d068f0cebb8e50a855b6e30f36fccb7f5a3c8
Author: Jeremy Allison <[email protected]>
Date:   Fri Feb 12 10:30:10 2016 -0800

    s3: VFS: Modify SMB_VFS_GET_NT_ACL to take a const struct smb_filename * 
instead of const char *
    
    Bumps VFS version to 35.
    
    Preparing to reduce use of lp_posix_pathnames().
    
    Most of this is boilerplate, the only subtleties are in
    the modules:
    
    vfs_catia.c
    vfs_media_harmony.c
    vfs_shadow_copy2.c
    vfs_unityed_media.c
    
    Where the path is modified then passed to SMB_VFS_NEXT_GET_NT_ACL().
    In these cases the change uses synthetic_smb_fname() to
    create a new struct smb_filename from the modified path.
    
    Signed-off-by: Jeremy Allison <[email protected]>
    Reviewed-by: Ralph Boehme <[email protected]>

-----------------------------------------------------------------------

Summary of changes:
 examples/VFS/skel_opaque.c          |  3 ++-
 examples/VFS/skel_transparent.c     | 10 +++++++---
 source3/include/vfs.h               |  9 ++++++---
 source3/include/vfs_macros.h        |  8 ++++----
 source3/modules/vfs_acl_common.c    | 21 ++++++++++++++-------
 source3/modules/vfs_catia.c         | 16 ++++++++++++++--
 source3/modules/vfs_default.c       |  9 ++++++---
 source3/modules/vfs_full_audit.c    |  6 +++---
 source3/modules/vfs_media_harmony.c | 21 ++++++++++++++++-----
 source3/modules/vfs_nfs4acl_xattr.c |  4 +++-
 source3/modules/vfs_shadow_copy2.c  | 36 ++++++++++++++++++++++++++++++------
 source3/modules/vfs_snapper.c       | 33 +++++++++++++++++++++++++++------
 source3/modules/vfs_time_audit.c    |  8 +++++---
 source3/modules/vfs_unityed_media.c | 21 ++++++++++++++++-----
 source3/smbd/dir.c                  |  2 +-
 source3/smbd/file_access.c          | 12 +++++++++++-
 source3/smbd/open.c                 | 27 +++++++++++++++++++++++----
 source3/smbd/posix_acls.c           | 15 ++++++++++++++-
 source3/smbd/pysmbd.c               | 18 ++++++++++++++++--
 source3/smbd/vfs.c                  |  8 ++++++--
 source3/torture/cmd_vfs.c           | 12 +++++++++++-
 21 files changed, 235 insertions(+), 64 deletions(-)


Changeset truncated at 500 lines:

diff --git a/examples/VFS/skel_opaque.c b/examples/VFS/skel_opaque.c
index a4309d4..0d5571c 100644
--- a/examples/VFS/skel_opaque.c
+++ b/examples/VFS/skel_opaque.c
@@ -667,7 +667,8 @@ static NTSTATUS skel_fget_nt_acl(vfs_handle_struct *handle, 
files_struct *fsp,
 }
 
 static NTSTATUS skel_get_nt_acl(vfs_handle_struct *handle,
-                               const char *name, uint32_t security_info,
+                               const struct smb_filename *smb_fname,
+                               uint32_t security_info,
                                TALLOC_CTX *mem_ctx,
                                struct security_descriptor **ppdesc)
 {
diff --git a/examples/VFS/skel_transparent.c b/examples/VFS/skel_transparent.c
index 2d1ed79..fc3c818 100644
--- a/examples/VFS/skel_transparent.c
+++ b/examples/VFS/skel_transparent.c
@@ -794,12 +794,16 @@ static NTSTATUS skel_fget_nt_acl(vfs_handle_struct 
*handle, files_struct *fsp,
 }
 
 static NTSTATUS skel_get_nt_acl(vfs_handle_struct *handle,
-                               const char *name, uint32_t security_info,
+                               const struct smb_filename *smb_fname,
+                               uint32_t security_info,
                                TALLOC_CTX *mem_ctx,
                                struct security_descriptor **ppdesc)
 {
-       return SMB_VFS_NEXT_GET_NT_ACL(handle, name, security_info, mem_ctx,
-                                      ppdesc);
+       return SMB_VFS_NEXT_GET_NT_ACL(handle,
+                               smb_fname,
+                               security_info,
+                               mem_ctx,
+                               ppdesc);
 }
 
 static NTSTATUS skel_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
diff --git a/source3/include/vfs.h b/source3/include/vfs.h
index c18ea59..d416a5b 100644
--- a/source3/include/vfs.h
+++ b/source3/include/vfs.h
@@ -170,8 +170,11 @@
 /* Bump to version 34 - Samba 4.4 will ship with that */
 /* Version 34 - Remove bool posix_open, add uint64_t posix_flags */
 /* Version 34 - Added bool posix_pathnames to struct smb_request */
+/* Bump to version 35 - Samba 4.5 will ship with that */
+/* Version 35 - Change get_nt_acl_fn from const char *, to
+               const struct smb_filename * */
 
-#define SMB_VFS_INTERFACE_VERSION 34
+#define SMB_VFS_INTERFACE_VERSION 35
 
 /*
     All intercepted VFS operations must be declared as static functions inside 
module source
@@ -745,7 +748,7 @@ struct vfs_fn_pointers {
                                   TALLOC_CTX *mem_ctx,
                                   struct security_descriptor **ppdesc);
        NTSTATUS (*get_nt_acl_fn)(struct vfs_handle_struct *handle,
-                                 const char *name,
+                                 const struct smb_filename *smb_fname,
                                  uint32_t security_info,
                                   TALLOC_CTX *mem_ctx,
                                  struct security_descriptor **ppdesc);
@@ -1188,7 +1191,7 @@ NTSTATUS smb_vfs_call_fget_nt_acl(struct 
vfs_handle_struct *handle,
                                  TALLOC_CTX *mem_ctx,
                                  struct security_descriptor **ppdesc);
 NTSTATUS smb_vfs_call_get_nt_acl(struct vfs_handle_struct *handle,
-                                const char *name,
+                                const struct smb_filename *smb_fname,
                                 uint32_t security_info,
                                 TALLOC_CTX *mem_ctx,
                                 struct security_descriptor **ppdesc);
diff --git a/source3/include/vfs_macros.h b/source3/include/vfs_macros.h
index 16d5bfd..cef3849 100644
--- a/source3/include/vfs_macros.h
+++ b/source3/include/vfs_macros.h
@@ -437,10 +437,10 @@
 #define SMB_VFS_NEXT_FGET_NT_ACL(handle, fsp, security_info, mem_ctx, ppdesc) \
        smb_vfs_call_fget_nt_acl((handle)->next, (fsp), (security_info), 
(mem_ctx), (ppdesc))
 
-#define SMB_VFS_GET_NT_ACL(conn, name, security_info, mem_ctx, ppdesc) \
-       smb_vfs_call_get_nt_acl((conn)->vfs_handles, (name), (security_info), 
(mem_ctx), (ppdesc))
-#define SMB_VFS_NEXT_GET_NT_ACL(handle, name, security_info, mem_ctx, ppdesc) \
-       smb_vfs_call_get_nt_acl((handle)->next, (name), (security_info), 
(mem_ctx), (ppdesc))
+#define SMB_VFS_GET_NT_ACL(conn, smb_fname, security_info, mem_ctx, ppdesc)    
\
+       smb_vfs_call_get_nt_acl((conn)->vfs_handles, (smb_fname), 
(security_info), (mem_ctx), (ppdesc))
+#define SMB_VFS_NEXT_GET_NT_ACL(handle, smb_fname, security_info, mem_ctx, 
ppdesc) \
+       smb_vfs_call_get_nt_acl((handle)->next, (smb_fname), (security_info), 
(mem_ctx), (ppdesc))
 
 #define SMB_VFS_AUDIT_FILE(conn, name, sacl, access_requested, access_denied) \
        smb_vfs_call_audit_file((conn)->vfs_handles, (name), (sacl), 
(access_requested), (access_denied))
diff --git a/source3/modules/vfs_acl_common.c b/source3/modules/vfs_acl_common.c
index f73e80c..30574e0 100644
--- a/source3/modules/vfs_acl_common.c
+++ b/source3/modules/vfs_acl_common.c
@@ -366,7 +366,7 @@ static NTSTATUS 
add_directory_inheritable_components(vfs_handle_struct *handle,
 
 static NTSTATUS get_nt_acl_internal(vfs_handle_struct *handle,
                                    files_struct *fsp,
-                                   const char *name,
+                                   const struct smb_filename *smb_fname,
                                    uint32_t security_info,
                                    TALLOC_CTX *mem_ctx,
                                    struct security_descriptor **ppdesc)
@@ -381,14 +381,17 @@ static NTSTATUS get_nt_acl_internal(vfs_handle_struct 
*handle,
        uint8_t sys_acl_hash_tmp[XATTR_SD_HASH_SIZE];
        struct security_descriptor *psd = NULL;
        struct security_descriptor *pdesc_next = NULL;
+       const char *name = NULL;
        bool ignore_file_system_acl = lp_parm_bool(SNUM(handle->conn),
                                                ACL_MODULE_NAME,
                                                "ignore system acls",
                                                false);
        TALLOC_CTX *frame = talloc_stackframe();
 
-       if (fsp && name == NULL) {
+       if (fsp && smb_fname == NULL) {
                name = fsp->fsp_name->base_name;
+       } else {
+               name = smb_fname->base_name;
        }
 
        DEBUG(10, ("get_nt_acl_internal: name=%s\n", name));
@@ -509,7 +512,7 @@ static NTSTATUS get_nt_acl_internal(vfs_handle_struct 
*handle,
                                                          &pdesc_next);
                } else {
                        status = SMB_VFS_NEXT_GET_NT_ACL(handle,
-                                                        name,
+                                                        smb_fname,
                                                         HASH_SECURITY_INFO,
                                                         mem_ctx,
                                                         &pdesc_next);
@@ -575,7 +578,7 @@ static NTSTATUS get_nt_acl_internal(vfs_handle_struct 
*handle,
                                                          &pdesc_next);
                } else {
                        status = SMB_VFS_NEXT_GET_NT_ACL(handle,
-                                                        name,
+                                                        smb_fname,
                                                         security_info,
                                                         mem_ctx,
                                                         &pdesc_next);
@@ -728,13 +731,17 @@ static NTSTATUS fget_nt_acl_common(vfs_handle_struct 
*handle,
 *********************************************************************/
 
 static NTSTATUS get_nt_acl_common(vfs_handle_struct *handle,
-                                 const char *name,
+                                 const struct smb_filename *smb_fname,
                                  uint32_t security_info,
                                  TALLOC_CTX *mem_ctx,
                                  struct security_descriptor **ppdesc)
 {
-       return get_nt_acl_internal(handle, NULL,
-                                  name, security_info, mem_ctx, ppdesc);
+       return get_nt_acl_internal(handle,
+                               NULL,
+                               smb_fname,
+                               security_info,
+                               mem_ctx,
+                               ppdesc);
 }
 
 /*********************************************************************
diff --git a/source3/modules/vfs_catia.c b/source3/modules/vfs_catia.c
index c17ffa8..48e2e3f 100644
--- a/source3/modules/vfs_catia.c
+++ b/source3/modules/vfs_catia.c
@@ -778,12 +778,14 @@ catia_streaminfo(struct vfs_handle_struct *handle,
 
 static NTSTATUS
 catia_get_nt_acl(struct vfs_handle_struct *handle,
-                const char *path,
+                const struct smb_filename *smb_fname,
                 uint32_t security_info,
                 TALLOC_CTX *mem_ctx,
                 struct security_descriptor **ppdesc)
 {
        char *mapped_name = NULL;
+       const char *path = smb_fname->base_name;
+       struct smb_filename *mapped_smb_fname = NULL;
        NTSTATUS status;
 
        status = catia_string_replace_allocate(handle->conn,
@@ -792,9 +794,19 @@ catia_get_nt_acl(struct vfs_handle_struct *handle,
                errno = map_errno_from_nt_status(status);
                return status;
        }
-       status = SMB_VFS_NEXT_GET_NT_ACL(handle, mapped_name,
+       mapped_smb_fname = synthetic_smb_fname(talloc_tos(),
+                                       mapped_name,
+                                       NULL,
+                                       NULL);
+       if (mapped_smb_fname == NULL) {
+               TALLOC_FREE(mapped_name);
+               return NT_STATUS_NO_MEMORY;
+       }
+
+       status = SMB_VFS_NEXT_GET_NT_ACL(handle, mapped_smb_fname,
                                         security_info, mem_ctx, ppdesc);
        TALLOC_FREE(mapped_name);
+       TALLOC_FREE(mapped_smb_fname);
 
        return status;
 }
diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c
index 762624b..43e65ac 100644
--- a/source3/modules/vfs_default.c
+++ b/source3/modules/vfs_default.c
@@ -2327,7 +2327,7 @@ static NTSTATUS vfswrap_fget_nt_acl(vfs_handle_struct 
*handle,
 }
 
 static NTSTATUS vfswrap_get_nt_acl(vfs_handle_struct *handle,
-                                  const char *name,
+                                  const struct smb_filename *smb_fname,
                                   uint32_t security_info,
                                   TALLOC_CTX *mem_ctx,
                                   struct security_descriptor **ppdesc)
@@ -2335,8 +2335,11 @@ static NTSTATUS vfswrap_get_nt_acl(vfs_handle_struct 
*handle,
        NTSTATUS result;
 
        START_PROFILE(get_nt_acl);
-       result = posix_get_nt_acl(handle->conn, name, security_info,
-                                 mem_ctx, ppdesc);
+       result = posix_get_nt_acl(handle->conn,
+                               smb_fname->base_name,
+                               security_info,
+                               mem_ctx,
+                               ppdesc);
        END_PROFILE(get_nt_acl);
        return result;
 }
diff --git a/source3/modules/vfs_full_audit.c b/source3/modules/vfs_full_audit.c
index 904b569..9c77185 100644
--- a/source3/modules/vfs_full_audit.c
+++ b/source3/modules/vfs_full_audit.c
@@ -1897,18 +1897,18 @@ static NTSTATUS 
smb_full_audit_fget_nt_acl(vfs_handle_struct *handle, files_stru
 }
 
 static NTSTATUS smb_full_audit_get_nt_acl(vfs_handle_struct *handle,
-                                         const char *name,
+                                         const struct smb_filename *smb_fname,
                                          uint32_t security_info,
                                          TALLOC_CTX *mem_ctx,
                                          struct security_descriptor **ppdesc)
 {
        NTSTATUS result;
 
-       result = SMB_VFS_NEXT_GET_NT_ACL(handle, name, security_info,
+       result = SMB_VFS_NEXT_GET_NT_ACL(handle, smb_fname, security_info,
                                         mem_ctx, ppdesc);
 
        do_log(SMB_VFS_OP_GET_NT_ACL, NT_STATUS_IS_OK(result), handle,
-              "%s", name);
+              "%s", smb_fname_str_do_log(smb_fname));
 
        return result;
 }
diff --git a/source3/modules/vfs_media_harmony.c 
b/source3/modules/vfs_media_harmony.c
index d960fae..65673e1 100644
--- a/source3/modules/vfs_media_harmony.c
+++ b/source3/modules/vfs_media_harmony.c
@@ -2016,19 +2016,20 @@ out:
  * In this case, "name" is a path.
  */
 static NTSTATUS mh_get_nt_acl(vfs_handle_struct *handle,
-                             const char *name,
+                             const struct smb_filename *smb_fname,
                              uint32_t security_info,
                              TALLOC_CTX *mem_ctx,
                              struct security_descriptor **ppdesc)
 {
        NTSTATUS status;
        char *clientPath;
+       struct smb_filename *client_smb_fname = NULL;
        TALLOC_CTX *ctx;
 
        DEBUG(MH_INFO_DEBUG, ("Entering mh_get_nt_acl\n"));
-       if (!is_in_media_files(name))
+       if (!is_in_media_files(smb_fname->base_name))
        {
-               status = SMB_VFS_NEXT_GET_NT_ACL(handle, name,
+               status = SMB_VFS_NEXT_GET_NT_ACL(handle, smb_fname,
                                                 security_info,
                                                 mem_ctx, ppdesc);
                goto out;
@@ -2038,18 +2039,28 @@ static NTSTATUS mh_get_nt_acl(vfs_handle_struct *handle,
        ctx = talloc_tos();
 
        if (alloc_get_client_path(handle, ctx,
-                               name,
+                               smb_fname->base_name,
                                &clientPath))
        {
                status = map_nt_error_from_unix(errno);
                goto err;
        }
 
-       status = SMB_VFS_NEXT_GET_NT_ACL(handle, clientPath,
+       client_smb_fname = synthetic_smb_fname(talloc_tos(),
+                                       clientPath,
+                                       NULL,
+                                       NULL);
+       if (client_smb_fname == NULL) {
+               TALLOC_FREE(clientPath);
+               return NT_STATUS_NO_MEMORY;
+       }
+
+       status = SMB_VFS_NEXT_GET_NT_ACL(handle, client_smb_fname,
                                         security_info,
                                         mem_ctx, ppdesc);
 err:
        TALLOC_FREE(clientPath);
+       TALLOC_FREE(client_smb_fname);
 out:
        return status;
 }
diff --git a/source3/modules/vfs_nfs4acl_xattr.c 
b/source3/modules/vfs_nfs4acl_xattr.c
index b041699..c02fd6a 100644
--- a/source3/modules/vfs_nfs4acl_xattr.c
+++ b/source3/modules/vfs_nfs4acl_xattr.c
@@ -541,12 +541,14 @@ static NTSTATUS nfs4acl_xattr_fget_nt_acl(struct 
vfs_handle_struct *handle,
 }
 
 static NTSTATUS nfs4acl_xattr_get_nt_acl(struct vfs_handle_struct *handle,
-                                 const char *name, uint32_t security_info,
+                                 const struct smb_filename *smb_fname,
+                                 uint32_t security_info,
                                  TALLOC_CTX *mem_ctx,
                                  struct security_descriptor **ppdesc)
 {
        struct SMB4ACL_T *pacl;
        NTSTATUS status;
+       const char *name = smb_fname->base_name;
        TALLOC_CTX *frame = talloc_stackframe();
 
        status = nfs4_get_nfs4_acl(handle, frame, name, &pacl);
diff --git a/source3/modules/vfs_shadow_copy2.c 
b/source3/modules/vfs_shadow_copy2.c
index 61ef5d4..87b4cd2 100644
--- a/source3/modules/vfs_shadow_copy2.c
+++ b/source3/modules/vfs_shadow_copy2.c
@@ -1466,6 +1466,7 @@ static NTSTATUS 
shadow_copy2_fget_nt_acl(vfs_handle_struct *handle,
        char *stripped;
        NTSTATUS status;
        char *conv;
+       struct smb_filename *smb_fname = NULL;
 
        if (!shadow_copy2_strip_snapshot(talloc_tos(), handle,
                                         fsp->fsp_name->base_name,
@@ -1482,14 +1483,24 @@ static NTSTATUS 
shadow_copy2_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,
+       smb_fname = synthetic_smb_fname(talloc_tos(),
+                                       conv,
+                                       NULL,
+                                       NULL);
+       if (smb_fname == NULL) {
+               TALLOC_FREE(conv);
+               return NT_STATUS_NO_MEMORY;
+       }
+
+       status = SMB_VFS_NEXT_GET_NT_ACL(handle, smb_fname, security_info,
                                         mem_ctx, ppdesc);
        TALLOC_FREE(conv);
+       TALLOC_FREE(smb_fname);
        return status;
 }
 
 static NTSTATUS shadow_copy2_get_nt_acl(vfs_handle_struct *handle,
-                                       const char *fname,
+                                       const struct smb_filename *smb_fname,
                                        uint32_t security_info,
                                        TALLOC_CTX *mem_ctx,
                                        struct security_descriptor **ppdesc)
@@ -1498,13 +1509,17 @@ static NTSTATUS 
shadow_copy2_get_nt_acl(vfs_handle_struct *handle,
        char *stripped;
        NTSTATUS status;
        char *conv;
+       struct smb_filename *conv_smb_fname = NULL;
 
-       if (!shadow_copy2_strip_snapshot(talloc_tos(), handle, fname,
-                                        &timestamp, &stripped)) {
+       if (!shadow_copy2_strip_snapshot(talloc_tos(),
+                                       handle,
+                                       smb_fname->base_name,
+                                       &timestamp,
+                                       &stripped)) {
                return map_nt_error_from_unix(errno);
        }
        if (timestamp == 0) {
-               return SMB_VFS_NEXT_GET_NT_ACL(handle, fname, security_info,
+               return SMB_VFS_NEXT_GET_NT_ACL(handle, smb_fname, security_info,
                                               mem_ctx, ppdesc);
        }
        conv = shadow_copy2_convert(talloc_tos(), handle, stripped, timestamp);
@@ -1512,9 +1527,18 @@ static NTSTATUS 
shadow_copy2_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,
+       conv_smb_fname = synthetic_smb_fname(talloc_tos(),
+                                       conv,
+                                       NULL,
+                                       NULL);
+       if (conv_smb_fname == NULL) {
+               TALLOC_FREE(conv);
+               return NT_STATUS_NO_MEMORY;
+       }
+       status = SMB_VFS_NEXT_GET_NT_ACL(handle, conv_smb_fname, security_info,
                                         mem_ctx, ppdesc);
        TALLOC_FREE(conv);
+       TALLOC_FREE(conv_smb_fname);
        return status;
 }
 
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;
 }
 
diff --git a/source3/modules/vfs_time_audit.c b/source3/modules/vfs_time_audit.c
index 2fc6afd..6e0c8a4 100644
--- a/source3/modules/vfs_time_audit.c
+++ b/source3/modules/vfs_time_audit.c
@@ -1895,7 +1895,7 @@ static NTSTATUS 
smb_time_audit_fget_nt_acl(vfs_handle_struct *handle,
 }
 
 static NTSTATUS smb_time_audit_get_nt_acl(vfs_handle_struct *handle,
-                                         const char *name,
+                                         const struct smb_filename *smb_fname,
                                          uint32_t security_info,
                                          TALLOC_CTX *mem_ctx,


-- 
Samba Shared Repository

Reply via email to