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