The branch, master has been updated
       via  eb60833... Fix bug 7310 - DOS attribute inconsistency with MS Office
       via  2e839a6... Merge branch 'master' of 
ssh://git.samba.org/data/git/samba
       via  f58d02d... Second part of fix for bug #6494 - Incorrect FileStatus 
returned in NT_CREATE_ANDX.
      from  6f30b9a... s3:smbd: handle SMB2 in deadtime_fn() and avoid 
disconnecting non idle clients

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


- Log -----------------------------------------------------------------
commit eb60833a45d0d21463d6101953136e1f3e3de380
Author: Jeremy Allison <j...@samba.org>
Date:   Tue Mar 30 22:16:37 2010 -0700

    Fix bug 7310 - DOS attribute inconsistency with MS Office
    
    On rename we need to set the archive bit on the renamed file.
    
    Jeremy

commit 2e839a636b2ea3f4d8dfcf5a8e99d9725787ba61
Merge: f58d02dbeeeba037ee79fba93a707e959e90ffa3 
6f30b9a6ff57ca6112e6319c64c411d2bf09be79
Author: Jeremy Allison <j...@samba.org>
Date:   Wed Mar 31 10:01:03 2010 -0700

    Merge branch 'master' of ssh://git.samba.org/data/git/samba

commit f58d02dbeeeba037ee79fba93a707e959e90ffa3
Author: Jeremy Allison <j...@samba.org>
Date:   Tue Mar 30 16:54:43 2010 -0700

    Second part of fix for bug #6494 - Incorrect FileStatus returned in 
NT_CREATE_ANDX.
    
    Ensure we do this in nttrans create too.
    
    Jeremy.

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

Summary of changes:
 source3/smbd/nttrans.c |   20 +++++++++++++++++++-
 source3/smbd/reply.c   |   15 +++++++++++++++
 2 files changed, 34 insertions(+), 1 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/nttrans.c b/source3/smbd/nttrans.c
index 93621dd..b79bb0b 100644
--- a/source3/smbd/nttrans.c
+++ b/source3/smbd/nttrans.c
@@ -1220,7 +1220,25 @@ static void call_nt_transact_create(connection_struct 
*conn,
        SOFF_T(p,0,file_len);
        p += 8;
        if (flags & EXTENDED_RESPONSE_REQUIRED) {
-               SSVAL(p,2,0x7);
+               uint16_t file_status = (NO_EAS|NO_SUBSTREAMS|NO_REPARSETAG);
+               size_t num_names = 0;
+               unsigned int num_streams;
+               struct stream_struct *streams = NULL;
+
+               /* Do we have any EA's ? */
+               status = get_ea_names_from_file(ctx, conn, fsp,
+                               smb_fname->base_name, NULL, &num_names);
+               if (NT_STATUS_IS_OK(status) && num_names) {
+                       file_status &= ~NO_EAS;
+               }
+               status = SMB_VFS_STREAMINFO(conn, NULL, smb_fname->base_name, 
ctx,
+                       &num_streams, &streams);
+               /* There is always one stream, ::$DATA. */
+               if (NT_STATUS_IS_OK(status) && num_streams > 1) {
+                       file_status &= ~NO_SUBSTREAMS;
+               }
+               TALLOC_FREE(streams);
+               SSVAL(p,2,file_status);
        }
        p += 4;
        SCVAL(p,0,fsp->is_directory ? 1 : 0);
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c
index fdcf487..c34e7f8 100644
--- a/source3/smbd/reply.c
+++ b/source3/smbd/reply.c
@@ -5905,6 +5905,21 @@ NTSTATUS rename_internals_fsp(connection_struct *conn,
                          "%s -> %s\n", smb_fname_str_dbg(fsp->fsp_name),
                          smb_fname_str_dbg(smb_fname_dst)));
 
+               if (lp_map_archive(SNUM(conn)) ||
+                   lp_store_dos_attributes(SNUM(conn))) {
+                       /* We must set the archive bit on the newly
+                          renamed file. */
+                       if (SMB_VFS_STAT(conn, smb_fname_dst) == 0) {
+                               uint32_t old_dosmode = dos_mode(conn,
+                                                       smb_fname_dst);
+                               file_set_dosmode(conn,
+                                       smb_fname_dst,
+                                       old_dosmode | FILE_ATTRIBUTE_ARCHIVE,
+                                       NULL,
+                                       true);
+                       }
+               }
+
                notify_rename(conn, fsp->is_directory, fsp->fsp_name,
                              smb_fname_dst);
 


-- 
Samba Shared Repository

Reply via email to