s3:smbd: Change get_ea_names_from_file() to take a const smb_filename * parameter...
authorJeremy Allison <jra@samba.org>
Fri, 11 Mar 2016 23:34:58 +0000 (15:34 -0800)
committerUri Simchoni <uri@samba.org>
Tue, 15 Mar 2016 07:29:30 +0000 (08:29 +0100)
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Uri Simchoni <uri@samba.org>
source3/modules/vfs_streams_xattr.c
source3/smbd/nttrans.c
source3/smbd/proto.h
source3/smbd/trans2.c

index b4bfb010aee6606c46470ee28f1da84fc7c3b70c..0d547346b14ca84a5557d43f18ecfdcf889ddf3e 100644 (file)
@@ -701,7 +701,7 @@ static NTSTATUS walk_xattr_streams(vfs_handle_struct *handle,
        status = get_ea_names_from_file(talloc_tos(),
                                handle->conn,
                                fsp,
-                               smb_fname->base_name,
+                               smb_fname,
                                &names,
                                &num_names);
        if (!NT_STATUS_IS_OK(status)) {
index b1917fe62c11c857e9a8e04038c32decf340677c..095128083866be04c0e10512fb24011d2a1a103c 100644 (file)
@@ -694,7 +694,7 @@ void reply_ntcreate_and_X(struct smb_request *req)
 
                /* Do we have any EA's ? */
                status = get_ea_names_from_file(ctx, conn, fsp,
-                               smb_fname->base_name, NULL, &num_names);
+                               smb_fname, NULL, &num_names);
                if (NT_STATUS_IS_OK(status) && num_names) {
                        file_status &= ~NO_EAS;
                }
@@ -1339,7 +1339,7 @@ static void call_nt_transact_create(connection_struct *conn,
 
                /* Do we have any EA's ? */
                status = get_ea_names_from_file(ctx, conn, fsp,
-                               smb_fname->base_name, NULL, &num_names);
+                               smb_fname, NULL, &num_names);
                if (NT_STATUS_IS_OK(status) && num_names) {
                        file_status &= ~NO_EAS;
                }
index f9ae4a3047b01f9b0913f661e7d277dfd171bb77..776e91dc8c74a34843406bf591f6c88b959bfac9 100644 (file)
@@ -1119,9 +1119,12 @@ bool samba_private_attr_name(const char *unix_ea_name);
 NTSTATUS get_ea_value(TALLOC_CTX *mem_ctx, connection_struct *conn,
                      files_struct *fsp, const char *fname,
                      const char *ea_name, struct ea_struct *pea);
-NTSTATUS get_ea_names_from_file(TALLOC_CTX *mem_ctx, connection_struct *conn,
-                               files_struct *fsp, const char *fname,
-                               char ***pnames, size_t *pnum_names);
+NTSTATUS get_ea_names_from_file(TALLOC_CTX *mem_ctx,
+                       connection_struct *conn,
+                       files_struct *fsp,
+                       const struct smb_filename *smb_fname,
+                       char ***pnames,
+                       size_t *pnum_names);
 NTSTATUS set_ea(connection_struct *conn, files_struct *fsp,
                const struct smb_filename *smb_fname, struct ea_list *ea_list);
 struct ea_list *read_ea_list_entry(TALLOC_CTX *ctx, const char *pdata, size_t data_size, size_t *pbytes_used);
index eb9966096ad8a9c901fb6618cfccc165eaa8ba31..b03094d19a069f79112750d362bb59ccf09bc7b1 100644 (file)
@@ -230,9 +230,12 @@ NTSTATUS get_ea_value(TALLOC_CTX *mem_ctx, connection_struct *conn,
        return NT_STATUS_OK;
 }
 
-NTSTATUS get_ea_names_from_file(TALLOC_CTX *mem_ctx, connection_struct *conn,
-                               files_struct *fsp, const char *fname,
-                               char ***pnames, size_t *pnum_names)
+NTSTATUS get_ea_names_from_file(TALLOC_CTX *mem_ctx,
+                               connection_struct *conn,
+                               files_struct *fsp,
+                               const struct smb_filename *smb_fname,
+                               char ***pnames,
+                               size_t *pnum_names)
 {
        /* Get a list of all xattrs. Max namesize is 64k. */
        size_t ea_namelist_size = 1024;
@@ -253,7 +256,7 @@ NTSTATUS get_ea_names_from_file(TALLOC_CTX *mem_ctx, connection_struct *conn,
                return NT_STATUS_OK;
        }
 
-       status = refuse_symlink(conn, fsp, fname);
+       status = refuse_symlink(conn, fsp, smb_fname->base_name);
        if (!NT_STATUS_IS_OK(status)) {
                /*
                 * Just return no EA's on a symlink.
@@ -285,8 +288,10 @@ NTSTATUS get_ea_names_from_file(TALLOC_CTX *mem_ctx, connection_struct *conn,
                        sizeret = SMB_VFS_FLISTXATTR(fsp, ea_namelist,
                                                     ea_namelist_size);
                } else {
-                       sizeret = SMB_VFS_LISTXATTR(conn, fname, ea_namelist,
-                                                   ea_namelist_size);
+                       sizeret = SMB_VFS_LISTXATTR(conn,
+                                       smb_fname->base_name,
+                                       ea_namelist,
+                                       ea_namelist_size);
                }
 
                if ((sizeret == -1) && (errno == ERANGE)) {
@@ -374,7 +379,7 @@ static NTSTATUS get_ea_list_from_file_path(TALLOC_CTX *mem_ctx,
        status = get_ea_names_from_file(talloc_tos(),
                                conn,
                                fsp,
-                               smb_fname->base_name,
+                               smb_fname,
                                &names,
                                &num_names);