s3: smbd: Change delete_all_streams() to take a const struct smb_filename *.
authorJeremy Allison <jra@samba.org>
Fri, 4 Mar 2016 22:07:04 +0000 (14:07 -0800)
committerRalph Boehme <slow@samba.org>
Mon, 7 Mar 2016 16:58:16 +0000 (17:58 +0100)
Prepare for changing the interface to vfs_streaminfo().

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source3/smbd/close.c
source3/smbd/open.c
source3/smbd/proto.h

index f3d6620f87d3886b0b6cbb6c3f7b487d9b3d45ee..144998f3ebdb1e367029c557668bff64e0ba8f5b 100644 (file)
@@ -161,7 +161,8 @@ static NTSTATUS close_filestruct(files_struct *fsp)
  Delete all streams
 ****************************************************************************/
 
-NTSTATUS delete_all_streams(connection_struct *conn, const char *fname)
+NTSTATUS delete_all_streams(connection_struct *conn,
+                       const struct smb_filename *smb_fname)
 {
        struct stream_struct *stream_info = NULL;
        int i;
@@ -169,7 +170,7 @@ NTSTATUS delete_all_streams(connection_struct *conn, const char *fname)
        TALLOC_CTX *frame = talloc_stackframe();
        NTSTATUS status;
 
-       status = vfs_streaminfo(conn, NULL, fname, talloc_tos(),
+       status = vfs_streaminfo(conn, NULL, smb_fname->base_name, talloc_tos(),
                                &num_streams, &stream_info);
 
        if (NT_STATUS_EQUAL(status, NT_STATUS_NOT_IMPLEMENTED)) {
@@ -200,8 +201,10 @@ NTSTATUS delete_all_streams(connection_struct *conn, const char *fname)
                        continue;
                }
 
-               smb_fname_stream = synthetic_smb_fname(
-                       talloc_tos(), fname, stream_info[i].name, NULL);
+               smb_fname_stream = synthetic_smb_fname(talloc_tos(),
+                                       smb_fname->base_name,
+                                       stream_info[i].name,
+                                       NULL);
 
                if (smb_fname_stream == NULL) {
                        DEBUG(0, ("talloc_aprintf failed\n"));
@@ -427,7 +430,7 @@ static NTSTATUS close_remove_share_mode(files_struct *fsp,
        if ((conn->fs_capabilities & FILE_NAMED_STREAMS)
            && !is_ntfs_stream_smb_fname(fsp->fsp_name)) {
 
-               status = delete_all_streams(conn, fsp->fsp_name->base_name);
+               status = delete_all_streams(conn, fsp->fsp_name);
 
                if (!NT_STATUS_IS_OK(status)) {
                        DEBUG(5, ("delete_all_streams failed: %s\n",
@@ -1145,7 +1148,7 @@ static NTSTATUS close_directory(struct smb_request *req, files_struct *fsp,
                if ((fsp->conn->fs_capabilities & FILE_NAMED_STREAMS)
                    && !is_ntfs_stream_smb_fname(fsp->fsp_name)) {
 
-                       status = delete_all_streams(fsp->conn, fsp->fsp_name->base_name);
+                       status = delete_all_streams(fsp->conn, fsp->fsp_name);
                        if (!NT_STATUS_IS_OK(status)) {
                                DEBUG(5, ("delete_all_streams failed: %s\n",
                                          nt_errstr(status)));
index 2cc14156763b681a67c9d268c8dc517f68c14118..0b3a4c287a5782f8bed896248e5a7a214474a9de 100644 (file)
@@ -3060,7 +3060,7 @@ static NTSTATUS open_file_ntcreate(connection_struct *conn,
        /* Delete streams if create_disposition requires it */
        if (!new_file_created && clear_ads(create_disposition) &&
            !is_ntfs_stream_smb_fname(smb_fname)) {
-               status = delete_all_streams(conn, smb_fname->base_name);
+               status = delete_all_streams(conn, smb_fname);
                if (!NT_STATUS_IS_OK(status)) {
                        TALLOC_FREE(lck);
                        fd_close(fsp);
index 8df3197488d369bf04583c08750bcf7119e9bfb7..1963fb3da4267609387d92a9c380015bd9f20a09 100644 (file)
@@ -144,7 +144,8 @@ void msg_close_file(struct messaging_context *msg_ctx,
                    uint32_t msg_type,
                    struct server_id server_id,
                    DATA_BLOB *data);
-NTSTATUS delete_all_streams(connection_struct *conn, const char *fname);
+NTSTATUS delete_all_streams(connection_struct *conn,
+                       const struct smb_filename *smb_fname);
 bool recursive_rmdir(TALLOC_CTX *ctx,
                     connection_struct *conn,
                     struct smb_filename *smb_dname);