diff options
author | Jeremy Allison <jra@samba.org> | 2010-03-05 15:10:30 -0800 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2010-03-05 15:13:37 -0800 |
commit | c61c9c3a4cda79fb82adf59bcb563d85797b9b76 (patch) | |
tree | 3049052ca5181e9229d48de841c5635eef3ba055 /source3/smbd/reply.c | |
parent | 95f22262656f38e5e0ea0b918ee68e958a9277f4 (diff) | |
download | samba-c61c9c3a4cda79fb82adf59bcb563d85797b9b76.tar.gz samba-c61c9c3a4cda79fb82adf59bcb563d85797b9b76.tar.bz2 samba-c61c9c3a4cda79fb82adf59bcb563d85797b9b76.zip |
Fix for bug #7189 - Open txt files with notepad on samba shares creates problem.
Ensure we don't use any of the create_options for Samba private
use. Add a new parameter to the VFS_CREATE call (private_flags)
which is only used internally. Renumber NTCREATEX_OPTIONS_PRIVATE_DENY_DOS
and NTCREATEX_OPTIONS_PRIVATE_DENY_FCB to match the S4 code).
Rev. the VFS interface to version 28.
Jeremy.
Diffstat (limited to 'source3/smbd/reply.c')
-rw-r--r-- | source3/smbd/reply.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index b1a4e31951..7147fbe1f2 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -1694,6 +1694,7 @@ void reply_open(struct smb_request *req) uint32 share_mode; uint32 create_disposition; uint32 create_options = 0; + uint32_t private_flags = 0; NTSTATUS status; bool ask_sharemode = lp_parm_bool(SNUM(conn), "smbd", "search ask sharemode", true); TALLOC_CTX *ctx = talloc_tos(); @@ -1737,7 +1738,7 @@ void reply_open(struct smb_request *req) if (!map_open_params_to_ntcreate(smb_fname, deny_mode, OPENX_FILE_EXISTS_OPEN, &access_mask, &share_mode, &create_disposition, - &create_options)) { + &create_options, &private_flags)) { reply_force_doserror(req, ERRDOS, ERRbadaccess); goto out; } @@ -1754,6 +1755,7 @@ void reply_open(struct smb_request *req) dos_attr, /* file_attributes */ oplock_request, /* oplock_request */ 0, /* allocation_size */ + private_flags, NULL, /* sd */ NULL, /* ea_list */ &fsp, /* result */ @@ -1853,6 +1855,7 @@ void reply_open_and_X(struct smb_request *req) uint32 share_mode; uint32 create_disposition; uint32 create_options = 0; + uint32_t private_flags = 0; TALLOC_CTX *ctx = talloc_tos(); START_PROFILE(SMBopenX); @@ -1910,7 +1913,8 @@ void reply_open_and_X(struct smb_request *req) if (!map_open_params_to_ntcreate(smb_fname, deny_mode, smb_ofun, &access_mask, &share_mode, &create_disposition, - &create_options)) { + &create_options, + &private_flags)) { reply_force_doserror(req, ERRDOS, ERRbadaccess); goto out; } @@ -1927,6 +1931,7 @@ void reply_open_and_X(struct smb_request *req) smb_attr, /* file_attributes */ oplock_request, /* oplock_request */ 0, /* allocation_size */ + private_flags, NULL, /* sd */ NULL, /* ea_list */ &fsp, /* result */ @@ -2144,6 +2149,7 @@ void reply_mknew(struct smb_request *req) fattr, /* file_attributes */ oplock_request, /* oplock_request */ 0, /* allocation_size */ + 0, /* private_flags */ NULL, /* sd */ NULL, /* ea_list */ &fsp, /* result */ @@ -2272,6 +2278,7 @@ void reply_ctemp(struct smb_request *req) fattr, /* file_attributes */ oplock_request, /* oplock_request */ 0, /* allocation_size */ + 0, /* private_flags */ NULL, /* sd */ NULL, /* ea_list */ &fsp, /* result */ @@ -2472,6 +2479,7 @@ static NTSTATUS do_unlink(connection_struct *conn, FILE_ATTRIBUTE_NORMAL, 0, /* oplock_request */ 0, /* allocation_size */ + 0, /* private_flags */ NULL, /* sd */ NULL, /* ea_list */ &fsp, /* result */ @@ -5341,6 +5349,7 @@ void reply_rmdir(struct smb_request *req) FILE_ATTRIBUTE_DIRECTORY, /* file_attributes */ 0, /* oplock_request */ 0, /* allocation_size */ + 0, /* private_flags */ NULL, /* sd */ NULL, /* ea_list */ &fsp, /* result */ @@ -6038,6 +6047,7 @@ NTSTATUS rename_internals(TALLOC_CTX *ctx, posix_pathnames ? FILE_FLAG_POSIX_SEMANTICS|0777 : 0, /* file_attributes */ 0, /* oplock_request */ 0, /* allocation_size */ + 0, /* private_flags */ NULL, /* sd */ NULL, /* ea_list */ &fsp, /* result */ @@ -6176,6 +6186,7 @@ NTSTATUS rename_internals(TALLOC_CTX *ctx, posix_pathnames ? FILE_FLAG_POSIX_SEMANTICS|0777 : 0, /* file_attributes */ 0, /* oplock_request */ 0, /* allocation_size */ + 0, /* private_flags */ NULL, /* sd */ NULL, /* ea_list */ &fsp, /* result */ @@ -6396,6 +6407,7 @@ NTSTATUS copy_file(TALLOC_CTX *ctx, if (!map_open_params_to_ntcreate(smb_fname_dst_tmp, 0, ofun, NULL, NULL, &new_create_disposition, + NULL, NULL)) { status = NT_STATUS_INVALID_PARAMETER; goto out; @@ -6415,6 +6427,7 @@ NTSTATUS copy_file(TALLOC_CTX *ctx, FILE_ATTRIBUTE_NORMAL, /* file_attributes */ INTERNAL_OPEN_ONLY, /* oplock_request */ 0, /* allocation_size */ + 0, /* private_flags */ NULL, /* sd */ NULL, /* ea_list */ &fsp1, /* result */ @@ -6443,6 +6456,7 @@ NTSTATUS copy_file(TALLOC_CTX *ctx, dosattrs, /* file_attributes */ INTERNAL_OPEN_ONLY, /* oplock_request */ 0, /* allocation_size */ + 0, /* private_flags */ NULL, /* sd */ NULL, /* ea_list */ &fsp2, /* result */ |