[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Fri Mar 5 16:14:11 MST 2010


The branch, master has been updated
       via  c61c9c3... Fix for bug #7189 - Open txt files with notepad on samba shares creates problem.
      from  95f2226... s4/tort: fix annoying "union spoolss_PrinterInfo" undefined warnings

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


- Log -----------------------------------------------------------------
commit c61c9c3a4cda79fb82adf59bcb563d85797b9b76
Author: Jeremy Allison <jra at samba.org>
Date:   Fri Mar 5 15:10:30 2010 -0800

    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.

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

Summary of changes:
 examples/VFS/skel_opaque.c              |    1 +
 examples/VFS/skel_transparent.c         |    2 +
 source3/include/proto.h                 |    4 ++-
 source3/include/smb.h                   |   15 ++++++---
 source3/include/vfs.h                   |    5 ++-
 source3/include/vfs_macros.h            |   12 ++++--
 source3/modules/onefs_open.c            |   22 ++++++++----
 source3/modules/vfs_acl_common.c        |    2 +
 source3/modules/vfs_default.c           |    4 ++-
 source3/modules/vfs_full_audit.c        |    2 +
 source3/modules/vfs_onefs_shadow_copy.c |    4 ++-
 source3/printing/nt_printing.c          |    3 ++
 source3/printing/printfsp.c             |    2 +-
 source3/rpc_server/srv_srvsvc_nt.c      |    2 +
 source3/smbd/nttrans.c                  |    4 ++
 source3/smbd/open.c                     |   55 ++++++++++++++++++++-----------
 source3/smbd/reply.c                    |   18 +++++++++-
 source3/smbd/smb2_create.c              |    1 +
 source3/smbd/smb2_setinfo.c             |    2 +-
 source3/smbd/trans2.c                   |   12 ++++++-
 source3/smbd/vfs.c                      |    4 ++-
 21 files changed, 129 insertions(+), 47 deletions(-)


Changeset truncated at 500 lines:

diff --git a/examples/VFS/skel_opaque.c b/examples/VFS/skel_opaque.c
index 380b3b6..a781495 100644
--- a/examples/VFS/skel_opaque.c
+++ b/examples/VFS/skel_opaque.c
@@ -150,6 +150,7 @@ static NTSTATUS skel_create_file(struct vfs_handle_struct *handle,
                                 uint32_t file_attributes,
                                 uint32_t oplock_request,
                                 uint64_t allocation_size,
+				uint32_t private_flags,
                                 struct security_descriptor *sd,
                                 struct ea_list *ea_list,
                                 files_struct **result,
diff --git a/examples/VFS/skel_transparent.c b/examples/VFS/skel_transparent.c
index 27363ff..3be5cf9 100644
--- a/examples/VFS/skel_transparent.c
+++ b/examples/VFS/skel_transparent.c
@@ -143,6 +143,7 @@ static NTSTATUS skel_create_file(struct vfs_handle_struct *handle,
                                 uint32_t file_attributes,
                                 uint32_t oplock_request,
                                 uint64_t allocation_size,
+				uint32_t private_flags,
                                 struct security_descriptor *sd,
                                 struct ea_list *ea_list,
                                 files_struct **result,
@@ -159,6 +160,7 @@ static NTSTATUS skel_create_file(struct vfs_handle_struct *handle,
 				file_attributes,
 				oplock_request,
 				allocation_size,
+				private_flags,
 				sd,
 				ea_list,
 				result,
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 35f4703..7c1f8fa 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -6631,7 +6631,8 @@ bool map_open_params_to_ntcreate(const struct smb_filename *smb_fname,
 				 uint32 *paccess_mask,
 				 uint32 *pshare_mode,
 				 uint32 *pcreate_disposition,
-				 uint32 *pcreate_options);
+				 uint32 *pcreate_options,
+				 uint32_t *pprivate_flags);
 NTSTATUS open_file_fchmod(struct smb_request *req, connection_struct *conn,
 			  struct smb_filename *smb_fname,
 			  files_struct **result);
@@ -6656,6 +6657,7 @@ NTSTATUS create_file_default(connection_struct *conn,
 			     uint32_t file_attributes,
 			     uint32_t oplock_request,
 			     uint64_t allocation_size,
+			     uint32_t private_flags,
 			     struct security_descriptor *sd,
 			     struct ea_list *ea_list,
 
diff --git a/source3/include/smb.h b/source3/include/smb.h
index de998cb..8d1e148 100644
--- a/source3/include/smb.h
+++ b/source3/include/smb.h
@@ -344,7 +344,8 @@ struct fd_handle {
 	SMB_OFF_T pos;
 	uint32 private_options;	/* NT Create options, but we only look at
 				 * NTCREATEX_OPTIONS_PRIVATE_DENY_DOS and
-				 * NTCREATEX_OPTIONS_PRIVATE_DENY_FCB (Except
+				 * NTCREATEX_OPTIONS_PRIVATE_DENY_FCB and
+				 * NTCREATEX_OPTIONS_PRIVATE_DELETE_ON_CLOSE
 				 * for print files *only*, where
 				 * DELETE_ON_CLOSE is not stored in the share
 				 * mode database.
@@ -1372,13 +1373,17 @@ struct bitmap {
 
 /*
  * Private create options used by the ntcreatex processing code. From Samba4.
- * We reuse some ignored flags for private use.
+ * We reuse some ignored flags for private use. Passed in the private_flags
+ * argument.
  */
-#define NTCREATEX_OPTIONS_PRIVATE_DENY_DOS     0x00010000
-#define NTCREATEX_OPTIONS_PRIVATE_DENY_FCB     0x00020000
+#define NTCREATEX_OPTIONS_PRIVATE_DENY_DOS     0x0001
+#define NTCREATEX_OPTIONS_PRIVATE_DENY_FCB     0x0002
 
 /* Private options for streams support */
-#define NTCREATEX_OPTIONS_PRIVATE_STREAM_DELETE 0x00040000
+#define NTCREATEX_OPTIONS_PRIVATE_STREAM_DELETE 0x0004
+
+/* Private options for printer support */
+#define NTCREATEX_OPTIONS_PRIVATE_DELETE_ON_CLOSE 0x0008
 
 /* Responses when opening a file. */
 #define FILE_WAS_SUPERSEDED 0
diff --git a/source3/include/vfs.h b/source3/include/vfs.h
index aee84a7..9ec4c3e 100644
--- a/source3/include/vfs.h
+++ b/source3/include/vfs.h
@@ -125,7 +125,8 @@
  * 			   return to fs_capabilities call. JRA. */
 /* Leave at 27 - not yet released. Add translate_name VFS call to convert
 		 UNIX names to Windows supported names -- asrinivasan. */
-#define SMB_VFS_INTERFACE_VERSION 27
+/* Changed to version 28 - Add private_flags uint32_t to CREATE call. */
+#define SMB_VFS_INTERFACE_VERSION 28
 
 
 /* to bug old modules which are trying to compile with the old functions */
@@ -213,6 +214,7 @@ struct vfs_fn_pointers {
 				uint32_t file_attributes,
 				uint32_t oplock_request,
 				uint64_t allocation_size,
+				uint32_t private_flags,
 				struct security_descriptor *sd,
 				struct ea_list *ea_list,
 				files_struct **result,
@@ -538,6 +540,7 @@ NTSTATUS smb_vfs_call_create_file(struct vfs_handle_struct *handle,
 				  uint32_t file_attributes,
 				  uint32_t oplock_request,
 				  uint64_t allocation_size,
+				  uint32_t private_flags,
 				  struct security_descriptor *sd,
 				  struct ea_list *ea_list,
 				  files_struct **result,
diff --git a/source3/include/vfs_macros.h b/source3/include/vfs_macros.h
index c6f83bd..4472e3a 100644
--- a/source3/include/vfs_macros.h
+++ b/source3/include/vfs_macros.h
@@ -120,10 +120,14 @@
 #define SMB_VFS_NEXT_OPEN(handle, fname, fsp, flags, mode) \
 	smb_vfs_call_open((handle)->next, (fname), (fsp), (flags), (mode))
 
-#define SMB_VFS_CREATE_FILE(conn, req, root_dir_fid, smb_fname, access_mask, share_access, create_disposition, create_options, file_attributes, oplock_request, allocation_size, sd, ea_list, result, pinfo) \
-	smb_vfs_call_create_file((conn)->vfs_handles, (req), (root_dir_fid), (smb_fname), (access_mask), (share_access), (create_disposition), (create_options), (file_attributes), (oplock_request), (allocation_size), (sd), (ea_list), (result), (pinfo))
-#define SMB_VFS_NEXT_CREATE_FILE(handle, req, root_dir_fid, smb_fname, access_mask, share_access, create_disposition, create_options, file_attributes, oplock_request, allocation_size, sd, ea_list, result, pinfo) \
-	smb_vfs_call_create_file((handle)->next, (req), (root_dir_fid), (smb_fname), (access_mask), (share_access), (create_disposition), (create_options), (file_attributes), (oplock_request), (allocation_size), (sd), (ea_list), (result), (pinfo))
+#define SMB_VFS_CREATE_FILE(conn, req, root_dir_fid, smb_fname, access_mask, share_access, create_disposition, \
+        create_options, file_attributes, oplock_request, allocation_size, private_flags, sd, ea_list, result, pinfo) \
+	smb_vfs_call_create_file((conn)->vfs_handles, (req), (root_dir_fid), (smb_fname), (access_mask), (share_access), (create_disposition), \
+        (create_options), (file_attributes), (oplock_request), (allocation_size), (private_flags), (sd), (ea_list), (result), (pinfo))
+#define SMB_VFS_NEXT_CREATE_FILE(handle, req, root_dir_fid, smb_fname, access_mask, share_access, create_disposition, \
+        create_options, file_attributes, oplock_request, allocation_size, private_flags, sd, ea_list, result, pinfo) \
+	smb_vfs_call_create_file((handle)->next, (req), (root_dir_fid), (smb_fname), (access_mask), (share_access), (create_disposition), \
+        (create_options), (file_attributes), (oplock_request), (allocation_size), (private_flags), (sd), (ea_list), (result), (pinfo))
 
 #define SMB_VFS_CLOSE(fsp) \
 	smb_vfs_call_close_fn((fsp)->conn->vfs_handles, (fsp))
diff --git a/source3/modules/onefs_open.c b/source3/modules/onefs_open.c
index 2b4e106..378d9f6 100644
--- a/source3/modules/onefs_open.c
+++ b/source3/modules/onefs_open.c
@@ -54,6 +54,7 @@ static NTSTATUS onefs_create_file_unixpath(connection_struct *conn,
 			      uint32_t file_attributes,
 			      uint32_t oplock_request,
 			      uint64_t allocation_size,
+			      uint32_t private_flags,
 			      struct security_descriptor *sd,
 			      struct ea_list *ea_list,
 			      files_struct **result,
@@ -438,6 +439,7 @@ NTSTATUS onefs_open_file_ntcreate(connection_struct *conn,
 				  uint32 create_options,
 				  uint32 new_dos_attributes,
 				  int oplock_request,
+				  uint32_t private_flags,
 				  struct security_descriptor *sd,
 				  files_struct *fsp,
 				  int *pinfo,
@@ -818,7 +820,7 @@ NTSTATUS onefs_open_file_ntcreate(connection_struct *conn,
 	DEBUG(10, ("fsp = %p\n", fsp));
 
 	fsp->share_access = share_access;
-	fsp->fh->private_options = create_options;
+	fsp->fh->private_options = private_flags;
 	fsp->access_mask = open_access_mask; /* We change this to the
 					      * requested access_mask after
 					      * the open is done. */
@@ -992,7 +994,7 @@ NTSTATUS onefs_open_file_ntcreate(connection_struct *conn,
 			 * calls. */
 
 			/* Try to find dup fsp if possible. */
-			if (create_options &
+			if (private_flags &
 			    (NTCREATEX_OPTIONS_PRIVATE_DENY_DOS|
 			     NTCREATEX_OPTIONS_PRIVATE_DENY_FCB)) {
 
@@ -1261,9 +1263,6 @@ NTSTATUS onefs_open_file_ntcreate(connection_struct *conn,
 	 * deny mode is compatible with all current opens.
 	 */
 
-	/* Record the options we were opened with. */
-	fsp->share_access = share_access;
-	fsp->fh->private_options = create_options;
 	/*
 	 * According to Samba4, SEC_FILE_READ_ATTRIBUTE is always granted,
 	 */
@@ -1629,7 +1628,7 @@ static NTSTATUS onefs_open_directory(connection_struct *conn,
 	fsp->can_write = False;
 
 	fsp->share_access = share_access;
-	fsp->fh->private_options = create_options;
+	fsp->fh->private_options = 0;
 	/*
 	 * According to Samba4, SEC_FILE_READ_ATTRIBUTE is always granted,
 	 */
@@ -1718,6 +1717,7 @@ static NTSTATUS onefs_create_file_unixpath(connection_struct *conn,
 					   uint32_t file_attributes,
 					   uint32_t oplock_request,
 					   uint64_t allocation_size,
+					   uint32_t private_flags,
 					   struct security_descriptor *sd,
 					   struct ea_list *ea_list,
 					   files_struct **result,
@@ -1732,7 +1732,8 @@ static NTSTATUS onefs_create_file_unixpath(connection_struct *conn,
 	DEBUG(10,("onefs_create_file_unixpath: access_mask = 0x%x "
 		  "file_attributes = 0x%x, share_access = 0x%x, "
 		  "create_disposition = 0x%x create_options = 0x%x "
-		  "oplock_request = 0x%x ea_list = 0x%p, sd = 0x%p, "
+		  "oplock_request = 0x%x private_flags = 0x%x "
+		  "ea_list = 0x%p, sd = 0x%p, "
 		  "fname = %s\n",
 		  (unsigned int)access_mask,
 		  (unsigned int)file_attributes,
@@ -1740,6 +1741,7 @@ static NTSTATUS onefs_create_file_unixpath(connection_struct *conn,
 		  (unsigned int)create_disposition,
 		  (unsigned int)create_options,
 		  (unsigned int)oplock_request,
+		  (unsigned int)private_flags,
 		  ea_list, sd, smb_fname_str_dbg(smb_fname)));
 
 	if (create_options & FILE_OPEN_BY_FILE_ID) {
@@ -1823,6 +1825,7 @@ static NTSTATUS onefs_create_file_unixpath(connection_struct *conn,
 			file_attributes,		/* file_attributes */
 			NO_OPLOCK,			/* oplock_request */
 			0,				/* allocation_size */
+			0,				/* private_flags */
 			NULL,				/* sd */
 			NULL,				/* ea_list */
 			&base_fsp,			/* result */
@@ -2066,6 +2069,7 @@ NTSTATUS onefs_create_file(vfs_handle_struct *handle,
 			   uint32_t file_attributes,
 			   uint32_t oplock_request,
 			   uint64_t allocation_size,
+			   uint32_t private_flags,
 			   struct security_descriptor *sd,
 			   struct ea_list *ea_list,
 			   files_struct **result,
@@ -2080,7 +2084,7 @@ NTSTATUS onefs_create_file(vfs_handle_struct *handle,
 	DEBUG(10,("onefs_create_file: access_mask = 0x%x "
 		  "file_attributes = 0x%x, share_access = 0x%x, "
 		  "create_disposition = 0x%x create_options = 0x%x "
-		  "oplock_request = 0x%x "
+		  "oplock_request = 0x%x private_flags = 0x%x"
 		  "root_dir_fid = 0x%x, ea_list = 0x%p, sd = 0x%p, "
 		  "fname = %s\n",
 		  (unsigned int)access_mask,
@@ -2089,6 +2093,7 @@ NTSTATUS onefs_create_file(vfs_handle_struct *handle,
 		  (unsigned int)create_disposition,
 		  (unsigned int)create_options,
 		  (unsigned int)oplock_request,
+		  (unsigned int)private_flags,
 		  (unsigned int)root_dir_fid,
 		  ea_list, sd, smb_fname_str_dbg(smb_fname)));
 
@@ -2118,6 +2123,7 @@ NTSTATUS onefs_create_file(vfs_handle_struct *handle,
 		file_attributes,			/* file_attributes */
 		oplock_request,				/* oplock_request */
 		allocation_size,			/* allocation_size */
+		private_flags,
 		sd,					/* sd */
 		ea_list,				/* ea_list */
 		&fsp,					/* result */
diff --git a/source3/modules/vfs_acl_common.c b/source3/modules/vfs_acl_common.c
index 1f1e403..5d6cfe7 100644
--- a/source3/modules/vfs_acl_common.c
+++ b/source3/modules/vfs_acl_common.c
@@ -873,6 +873,7 @@ static NTSTATUS create_file_acl_common(struct vfs_handle_struct *handle,
 				uint32_t file_attributes,
 				uint32_t oplock_request,
 				uint64_t allocation_size,
+				uint32_t private_flags,
 				struct security_descriptor *sd,
 				struct ea_list *ea_list,
 				files_struct **result,
@@ -894,6 +895,7 @@ static NTSTATUS create_file_acl_common(struct vfs_handle_struct *handle,
 					file_attributes,
 					oplock_request,
 					allocation_size,
+					private_flags,
 					sd,
 					ea_list,
 					result,
diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c
index 6e2a571..ed9bb36 100644
--- a/source3/modules/vfs_default.c
+++ b/source3/modules/vfs_default.c
@@ -298,6 +298,7 @@ static NTSTATUS vfswrap_create_file(vfs_handle_struct *handle,
 				    uint32_t file_attributes,
 				    uint32_t oplock_request,
 				    uint64_t allocation_size,
+				    uint32_t private_flags,
 				    struct security_descriptor *sd,
 				    struct ea_list *ea_list,
 				    files_struct **result,
@@ -307,7 +308,8 @@ static NTSTATUS vfswrap_create_file(vfs_handle_struct *handle,
 				   access_mask, share_access,
 				   create_disposition, create_options,
 				   file_attributes, oplock_request,
-				   allocation_size, sd, ea_list, result,
+				   allocation_size, private_flags,
+				   sd, ea_list, result,
 				   pinfo);
 }
 
diff --git a/source3/modules/vfs_full_audit.c b/source3/modules/vfs_full_audit.c
index 8a40f67..7e7a4f4 100644
--- a/source3/modules/vfs_full_audit.c
+++ b/source3/modules/vfs_full_audit.c
@@ -868,6 +868,7 @@ static NTSTATUS smb_full_audit_create_file(vfs_handle_struct *handle,
 				      uint32_t file_attributes,
 				      uint32_t oplock_request,
 				      uint64_t allocation_size,
+				      uint32_t private_flags,
 				      struct security_descriptor *sd,
 				      struct ea_list *ea_list,
 				      files_struct **result_fsp,
@@ -911,6 +912,7 @@ static NTSTATUS smb_full_audit_create_file(vfs_handle_struct *handle,
 		file_attributes,			/* file_attributes */
 		oplock_request,				/* oplock_request */
 		allocation_size,			/* allocation_size */
+		private_flags,
 		sd,					/* sd */
 		ea_list,				/* ea_list */
 		result_fsp,				/* result */
diff --git a/source3/modules/vfs_onefs_shadow_copy.c b/source3/modules/vfs_onefs_shadow_copy.c
index c733392..cf84e58 100644
--- a/source3/modules/vfs_onefs_shadow_copy.c
+++ b/source3/modules/vfs_onefs_shadow_copy.c
@@ -233,6 +233,7 @@ onefs_shadow_copy_create_file(vfs_handle_struct *handle,
 			      uint32_t file_attributes,
 			      uint32_t oplock_request,
 			      uint64_t allocation_size,
+			      uint32_t private_flags,
 			      struct security_descriptor *sd,
 			      struct ea_list *ea_list,
 			      files_struct **result,
@@ -243,7 +244,8 @@ onefs_shadow_copy_create_file(vfs_handle_struct *handle,
 				  access_mask, share_access,
 				  create_disposition, create_options,
 				  file_attributes, oplock_request,
-				  allocation_size, sd, ea_list, result, pinfo),
+				  allocation_size, private_flags,
+				  sd, ea_list, result, pinfo),
 			      NTSTATUS);
 }
 
diff --git a/source3/printing/nt_printing.c b/source3/printing/nt_printing.c
index 7aef424..d7fe272 100644
--- a/source3/printing/nt_printing.c
+++ b/source3/printing/nt_printing.c
@@ -1315,6 +1315,7 @@ static int file_version_is_newer(connection_struct *conn, fstring new_file, fstr
 		FILE_ATTRIBUTE_NORMAL,			/* file_attributes */
 		INTERNAL_OPEN_ONLY,			/* oplock_request */
 		0,					/* allocation_size */
+		0,					/* private_flags */
 		NULL,					/* sd */
 		NULL,					/* ea_list */
 		&fsp,					/* result */
@@ -1367,6 +1368,7 @@ static int file_version_is_newer(connection_struct *conn, fstring new_file, fstr
 		FILE_ATTRIBUTE_NORMAL,			/* file_attributes */
 		INTERNAL_OPEN_ONLY,			/* oplock_request */
 		0,					/* allocation_size */
+		0,					/* private_flags */
 		NULL,					/* sd */
 		NULL,					/* ea_list */
 		&fsp,					/* result */
@@ -1524,6 +1526,7 @@ static uint32 get_correct_cversion(struct pipes_struct *p,
 		0,					/* create_options */
 		FILE_ATTRIBUTE_NORMAL,			/* file_attributes */
 		INTERNAL_OPEN_ONLY,			/* oplock_request */
+		0,					/* private_flags */
 		0,					/* allocation_size */
 		NULL,					/* sd */
 		NULL,					/* ea_list */
diff --git a/source3/printing/printfsp.c b/source3/printing/printfsp.c
index b9fe492..756a314 100644
--- a/source3/printing/printfsp.c
+++ b/source3/printing/printfsp.c
@@ -94,7 +94,7 @@ void print_fsp_end(files_struct *fsp, enum file_close_type close_type)
 {
 	uint32 jobid;
 
-	if (fsp->fh->private_options & FILE_DELETE_ON_CLOSE) {
+	if (fsp->fh->private_options & NTCREATEX_OPTIONS_PRIVATE_DELETE_ON_CLOSE) {
 		/*
 		 * Truncate the job. print_job_end will take
 		 * care of deleting it for us. JRA.
diff --git a/source3/rpc_server/srv_srvsvc_nt.c b/source3/rpc_server/srv_srvsvc_nt.c
index a2d1d07..0681ca3 100644
--- a/source3/rpc_server/srv_srvsvc_nt.c
+++ b/source3/rpc_server/srv_srvsvc_nt.c
@@ -2130,6 +2130,7 @@ WERROR _srvsvc_NetGetFileSecurity(pipes_struct *p,
 		0,					/* file_attributes */
 		INTERNAL_OPEN_ONLY,			/* oplock_request */
 		0,					/* allocation_size */
+		0,					/* private_flags */
 		NULL,					/* sd */
 		NULL,					/* ea_list */
 		&fsp,					/* result */
@@ -2260,6 +2261,7 @@ WERROR _srvsvc_NetSetFileSecurity(pipes_struct *p,
 		0,					/* file_attributes */
 		INTERNAL_OPEN_ONLY,			/* oplock_request */
 		0,					/* allocation_size */
+		0,					/* private_flags */
 		NULL,					/* sd */
 		NULL,					/* ea_list */
 		&fsp,					/* result */
diff --git a/source3/smbd/nttrans.c b/source3/smbd/nttrans.c
index 6563754..93621dd 100644
--- a/source3/smbd/nttrans.c
+++ b/source3/smbd/nttrans.c
@@ -570,6 +570,7 @@ void reply_ntcreate_and_X(struct smb_request *req)
 		file_attributes,			/* file_attributes */
 		oplock_request,				/* oplock_request */
 		allocation_size,			/* allocation_size */
+		0,					/* private_flags */
 		NULL,					/* sd */
 		NULL,					/* ea_list */
 		&fsp,					/* result */
@@ -1105,6 +1106,7 @@ static void call_nt_transact_create(connection_struct *conn,
 		file_attributes,			/* file_attributes */
 		oplock_request,				/* oplock_request */
 		allocation_size,			/* allocation_size */
+		0,					/* private_flags */
 		sd,					/* sd */
 		ea_list,				/* ea_list */
 		&fsp,					/* result */
@@ -1331,6 +1333,7 @@ static NTSTATUS copy_internals(TALLOC_CTX *ctx,
 		FILE_ATTRIBUTE_NORMAL,			/* file_attributes */
 		NO_OPLOCK,				/* oplock_request */
 		0,					/* allocation_size */
+		0,					/* private_flags */
 		NULL,					/* sd */
 		NULL,					/* ea_list */
 		&fsp1,					/* result */
@@ -1353,6 +1356,7 @@ static NTSTATUS copy_internals(TALLOC_CTX *ctx,
 		fattr,					/* file_attributes */
 		NO_OPLOCK,				/* oplock_request */
 		0,					/* allocation_size */
+		0,					/* private_flags */
 		NULL,					/* sd */
 		NULL,					/* ea_list */
 		&fsp2,					/* result */
diff --git a/source3/smbd/open.c b/source3/smbd/open.c
index 120de0f..fd9796d 100644
--- a/source3/smbd/open.c
+++ b/source3/smbd/open.c
@@ -39,6 +39,7 @@ static NTSTATUS create_file_unixpath(connection_struct *conn,
 				     uint32_t file_attributes,
 				     uint32_t oplock_request,
 				     uint64_t allocation_size,
+				     uint32_t private_flags,
 				     struct security_descriptor *sd,
 				     struct ea_list *ea_list,
 
@@ -1205,12 +1206,14 @@ bool map_open_params_to_ntcreate(const struct smb_filename *smb_fname,
 				 uint32 *paccess_mask,
 				 uint32 *pshare_mode,
 				 uint32 *pcreate_disposition,
-				 uint32 *pcreate_options)
+				 uint32 *pcreate_options,
+				 uint32_t *pprivate_flags)
 {
 	uint32 access_mask;
 	uint32 share_mode;
 	uint32 create_disposition;
 	uint32 create_options = FILE_NON_DIRECTORY_FILE;
+	uint32_t private_flags = 0;
 
 	DEBUG(10,("map_open_params_to_ntcreate: fname = %s, deny_mode = 0x%x, "
 		  "open_func = 0x%x\n",
@@ -1288,7 +1291,7 @@ bool map_open_params_to_ntcreate(const struct smb_filename *smb_fname,
 			break;
 
 		case DENY_DOS:
-			create_options |= NTCREATEX_OPTIONS_PRIVATE_DENY_DOS;
+			private_flags |= NTCREATEX_OPTIONS_PRIVATE_DENY_DOS;
 	                if (is_executable(smb_fname->base_name)) {
 				share_mode = FILE_SHARE_READ|FILE_SHARE_WRITE;
 			} else {
@@ -1301,7 +1304,7 @@ bool map_open_params_to_ntcreate(const struct smb_filename *smb_fname,
 			break;
 
 		case DENY_FCB:
-			create_options |= NTCREATEX_OPTIONS_PRIVATE_DENY_FCB;
+			private_flags |= NTCREATEX_OPTIONS_PRIVATE_DENY_FCB;
 			share_mode = FILE_SHARE_NONE;
 			break;
 
@@ -1313,12 +1316,13 @@ bool map_open_params_to_ntcreate(const struct smb_filename *smb_fname,
 
 	DEBUG(10,("map_open_params_to_ntcreate: file %s, access_mask = 0x%x, "
 		  "share_mode = 0x%x, create_disposition = 0x%x, "
-		  "create_options = 0x%x\n",
+		  "create_options = 0x%x private_flags = 0x%x\n",


-- 
Samba Shared Repository


More information about the samba-cvs mailing list