[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha7-2380-g5eac926

Tim Prouty tprouty at samba.org
Thu Jun 18 03:14:08 GMT 2009


The branch, master has been updated
       via  5eac92697ed1781e83be460d6ed7b29a154464a2 (commit)
       via  4e3656b8d1d0bf8c0c4ade01332e7384ea890810 (commit)
       via  5cfac1a1bd59712d7a771d3631e869c5d078a0f3 (commit)
      from  78e316ddbc15c37604c84cb08dd13c95e2539d68 (commit)

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


- Log -----------------------------------------------------------------
commit 5eac92697ed1781e83be460d6ed7b29a154464a2
Author: Tim Prouty <tprouty at samba.org>
Date:   Wed Jun 17 19:54:12 2009 -0700

    s3 onefs: Remove dfs resolution from create_file() now that it's being done at a higher level

commit 4e3656b8d1d0bf8c0c4ade01332e7384ea890810
Author: Tim Prouty <tprouty at samba.org>
Date:   Tue Jun 16 12:01:13 2009 -0700

    s3: Change SMB_VFS_OPEN to take an smb_filename struct
    
    This was a little messy because of all of the vfs modules I had to
    touch.  Most of them were pretty straight forward, but the streams
    modules required a little attention to handle smb_filename.  Since the
    use of smb_filename enables the vfs modules to access the raw,
    over-the-wire stream, a little bit of the handling that was being done
    by split_ntfs_stream_name has now been shifted into the individual
    stream modules.  It may be a little more code, but overall it gives
    more flexibility to the streams modules, while also allowing correct
    stream handling.

commit 5cfac1a1bd59712d7a771d3631e869c5d078a0f3
Author: Tim Prouty <tprouty at samba.org>
Date:   Mon Jun 15 14:14:31 2009 -0700

    s3: Plumb smb_filename from create_file all of the way down to fd_open
    
    I used the smb_filename struct everywhere that was feasible for the
    first pass.  There are still some places in this path that need to be
    changed to use smb_filename, but this is a good start.
    
    I also:
    - Removed fname/path arguments from a few functions that weren't
      really using them.
    - Added a utility function for detecting whether an smb_filename is a
      stream.

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

Summary of changes:
 examples/VFS/skel_opaque.c              |    5 +-
 examples/VFS/skel_transparent.c         |    5 +-
 source3/include/proto.h                 |    8 +-
 source3/include/vfs.h                   |    7 +-
 source3/modules/onefs_open.c            |   32 +--
 source3/modules/vfs_acl_tdb.c           |   20 +-
 source3/modules/vfs_acl_xattr.c         |   20 +-
 source3/modules/vfs_audit.c             |   10 +-
 source3/modules/vfs_cap.c               |   22 ++-
 source3/modules/vfs_catia.c             |   18 +-
 source3/modules/vfs_commit.c            |    6 +-
 source3/modules/vfs_default.c           |   22 ++-
 source3/modules/vfs_extd_audit.c        |   12 +-
 source3/modules/vfs_full_audit.c        |    9 +-
 source3/modules/vfs_onefs.c             |    5 +-
 source3/modules/vfs_onefs_shadow_copy.c |   11 +-
 source3/modules/vfs_prealloc.c          |   13 +-
 source3/modules/vfs_preopen.c           |   17 +-
 source3/modules/vfs_shadow_copy2.c      |   31 ++-
 source3/modules/vfs_streams_depot.c     |  111 ++++++--
 source3/modules/vfs_streams_xattr.c     |  117 ++++++---
 source3/modules/vfs_syncops.c           |   25 ++-
 source3/smbd/file_access.c              |   25 ++-
 source3/smbd/filename.c                 |    5 +-
 source3/smbd/nttrans.c                  |   28 ++
 source3/smbd/open.c                     |  443 +++++++++++++++++--------------
 source3/torture/cmd_vfs.c               |   13 +-
 27 files changed, 681 insertions(+), 359 deletions(-)


Changeset truncated at 500 lines:

diff --git a/examples/VFS/skel_opaque.c b/examples/VFS/skel_opaque.c
index 118a5b9..d1000f1 100644
--- a/examples/VFS/skel_opaque.c
+++ b/examples/VFS/skel_opaque.c
@@ -122,9 +122,10 @@ static int skel_closedir(vfs_handle_struct *handle,  SMB_STRUCT_DIR *dir)
 	return vfswrap_closedir(NULL,  dir);
 }
 
-static int skel_open(vfs_handle_struct *handle,  const char *fname, files_struct *fsp, int flags, mode_t mode)
+static int skel_open(vfs_handle_struct *handle,  struct smb_fname *smb_fname,
+		     files_struct *fsp, int flags, mode_t mode)
 {
-	return vfswrap_open(NULL,  fname, flags, mode);
+	return vfswrap_open(NULL, smb_fname, flags, mode);
 }
 
 static int skel_close(vfs_handle_struct *handle, files_struct *fsp)
diff --git a/examples/VFS/skel_transparent.c b/examples/VFS/skel_transparent.c
index a95b5ae..101951b 100644
--- a/examples/VFS/skel_transparent.c
+++ b/examples/VFS/skel_transparent.c
@@ -116,9 +116,10 @@ static int skel_closedir(vfs_handle_struct *handle,  SMB_STRUCT_DIR *dir)
 	return SMB_VFS_NEXT_CLOSEDIR(handle, dir);
 }
 
-static int skel_open(vfs_handle_struct *handle,  const char *fname, files_struct *fsp, int flags, mode_t mode)
+static int skel_open(vfs_handle_struct *handle, struct smb_filename *smb_fname,
+		     files_struct *fsp, int flags, mode_t mode)
 {
-	return SMB_VFS_NEXT_OPEN(handle, fname, fsp, flags, mode);
+	return SMB_VFS_NEXT_OPEN(handle, smb_fname, fsp, flags, mode);
 }
 
 static int skel_close(vfs_handle_struct *handle, files_struct *fsp)
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 1c7ba87..4ae141e 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -6337,7 +6337,8 @@ NTSTATUS close_fake_file(struct smb_request *req, files_struct *fsp);
 bool can_access_file_acl(struct connection_struct *conn,
 				const char * fname,
 				uint32_t access_mask);
-bool can_delete_file_in_directory(connection_struct *conn, const char *fname);
+bool can_delete_file_in_directory(connection_struct *conn,
+				  const struct smb_filename *smb_fname);
 bool can_access_file_data(connection_struct *conn, const char *fname, SMB_STRUCT_STAT *psbuf, uint32 access_mask);
 bool can_write_to_file(connection_struct *conn, const char *fname, SMB_STRUCT_STAT *psbuf);
 bool directory_has_default_acl(connection_struct *conn, const char *fname);
@@ -6581,6 +6582,8 @@ void send_nt_replies(connection_struct *conn,
 		     char *params, int paramsize,
 		     char *pdata, int datasize);
 bool is_ntfs_stream_name(const char *fname);
+bool is_ntfs_stream_smb_fname(const struct smb_filename *smb_fname);
+bool is_ntfs_default_stream_smb_fname(const struct smb_filename *smb_fname);
 void reply_ntcreate_and_X(struct smb_request *req);
 void reply_ntcancel(struct smb_request *req);
 void reply_ntrename(struct smb_request *req);
@@ -6606,7 +6609,6 @@ bool is_stat_open(uint32 access_mask);
 bool request_timed_out(struct timeval request_time,
 		       struct timeval timeout);
 bool open_match_attributes(connection_struct *conn,
-			   const char *path,
 			   uint32 old_dos_attr,
 			   uint32 new_dos_attr,
 			   mode_t existing_unx_mode,
@@ -6662,7 +6664,7 @@ NTSTATUS create_file_default(connection_struct *conn,
 NTSTATUS get_relative_fid_filename(connection_struct *conn,
 				   struct smb_request *req,
 				   uint16_t root_dir_fid,
-				   const char *fname, char **new_fname);
+				   struct smb_filename *smb_fname);
 
 /* The following definitions come from smbd/oplock.c  */
 
diff --git a/source3/include/vfs.h b/source3/include/vfs.h
index e0e0228..53a4798 100644
--- a/source3/include/vfs.h
+++ b/source3/include/vfs.h
@@ -117,7 +117,8 @@
 /* Leave at 25 - not yet released. Add init_search_op call. - sdann */
 /* Leave at 25 - not yet released. Add locking calls. -- zkirsch. */
 /* Leave at 25 - not yet released. Add strict locking calls. -- drichards. */
-/* Changed to version 26 - Plumb struct smb_filename to SMB_VFS_CREATE_FILE. */
+/* Changed to version 26 - Plumb struct smb_filename to SMB_VFS_CREATE_FILE,
+			   SMB_VFS_OPEN. */
 
 #define SMB_VFS_INTERFACE_VERSION 26
 
@@ -330,7 +331,9 @@ struct vfs_ops {
 
 		/* File operations */
 
-		int (*open)(struct vfs_handle_struct *handle, const char *fname, files_struct *fsp, int flags, mode_t mode);
+		int (*open)(struct vfs_handle_struct *handle,
+			    struct smb_filename *smb_fname, files_struct *fsp,
+			    int flags, mode_t mode);
 		NTSTATUS (*create_file)(struct vfs_handle_struct *handle,
 					struct smb_request *req,
 					uint16_t root_dir_fid,
diff --git a/source3/modules/onefs_open.c b/source3/modules/onefs_open.c
index c773f9e..8b6ae20 100644
--- a/source3/modules/onefs_open.c
+++ b/source3/modules/onefs_open.c
@@ -685,8 +685,7 @@ NTSTATUS onefs_open_file_ntcreate(connection_struct *conn,
 	if (!posix_open && file_existed &&
 	    ((create_disposition == FILE_OVERWRITE) ||
 		(create_disposition == FILE_OVERWRITE_IF))) {
-		if (!open_match_attributes(conn, fname,
-					   existing_dos_attributes,
+		if (!open_match_attributes(conn, existing_dos_attributes,
 					   new_dos_attributes, psbuf->st_ex_mode,
 					   unx_mode, &new_unx_mode)) {
 			DEBUG(5, ("onefs_open_file_ntcreate: attributes "
@@ -2018,36 +2017,11 @@ NTSTATUS onefs_create_file(vfs_handle_struct *handle,
 
 	/* Get the file name if root_dir_fid was specified. */
 	if (root_dir_fid != 0) {
-		char *new_fname;
-
 		status = get_relative_fid_filename(conn, req, root_dir_fid,
-						   fname, &new_fname);
-		if (!NT_STATUS_IS_OK(status)) {
-			goto fail;
-		}
-
-		fname = new_fname;
-	}
-
-	/* Resolve the file name if this was a DFS pathname. */
-	if ((req != NULL) && (req->flags2 & FLAGS2_DFS_PATHNAMES)) {
-		char *resolved_fname;
-
-		status = resolve_dfspath(talloc_tos(), conn, true,
-					 smb_fname->base_name,
-					 &resolved_fname);
-
+						   smb_fname);
 		if (!NT_STATUS_IS_OK(status)) {
-			/*
-			 * For PATH_NOT_COVERED we had
-			 * reply_botherror(req, NT_STATUS_PATH_NOT_COVERED,
-			 *		   ERRSRV, ERRbadpath);
-			 * Need to fix in callers
-			 */
 			goto fail;
 		}
-		TALLOC_FREE(smb_fname->base_name);
-		smb_fname->base_name = resolved_fname;
 	}
 
 	status = get_full_smb_filename(talloc_tos(), smb_fname, &fname);
@@ -2056,7 +2030,7 @@ NTSTATUS onefs_create_file(vfs_handle_struct *handle,
 	}
 
 	/* All file access must go through check_name() */
-	status = check_name(conn, fname);
+	status = check_name(conn, smb_fname->base_name);
 	if (!NT_STATUS_IS_OK(status)) {
 		goto fail;
 	}
diff --git a/source3/modules/vfs_acl_tdb.c b/source3/modules/vfs_acl_tdb.c
index 463250a..e0a5b14 100644
--- a/source3/modules/vfs_acl_tdb.c
+++ b/source3/modules/vfs_acl_tdb.c
@@ -549,7 +549,7 @@ static NTSTATUS inherit_new_acl(vfs_handle_struct *handle,
 *********************************************************************/
 
 static int open_acl_tdb(vfs_handle_struct *handle,
-					const char *fname,
+					struct smb_filename *smb_fname,
 					files_struct *fsp,
 					int flags,
 					mode_t mode)
@@ -557,7 +557,17 @@ static int open_acl_tdb(vfs_handle_struct *handle,
 	uint32_t access_granted = 0;
 	struct security_descriptor *pdesc = NULL;
 	bool file_existed = true;
-	NTSTATUS status = get_nt_acl_tdb_internal(handle,
+	char *fname = NULL;
+	NTSTATUS status;
+
+	status = get_full_smb_filename(talloc_tos(), smb_fname,
+				       &fname);
+	if (!NT_STATUS_IS_OK(status)) {
+		errno = map_errno_from_nt_status(status);
+		return -1;
+	}
+
+	status = get_nt_acl_tdb_internal(handle,
 					NULL,
 					fname,
 					(OWNER_SECURITY_INFORMATION |
@@ -573,7 +583,7 @@ static int open_acl_tdb(vfs_handle_struct *handle,
 		if (!NT_STATUS_IS_OK(status)) {
 			DEBUG(10,("open_acl_tdb: file %s open "
 				"refused with error %s\n",
-				fname,
+				smb_fname_str_dbg(smb_fname),
 				nt_errstr(status) ));
 			errno = map_errno_from_nt_status(status);
 			return -1;
@@ -584,10 +594,10 @@ static int open_acl_tdb(vfs_handle_struct *handle,
 
 	DEBUG(10,("open_acl_tdb: get_nt_acl_attr_internal for "
 		"file %s returned %s\n",
-		fname,
+		smb_fname_str_dbg(smb_fname),
 		nt_errstr(status) ));
 
-	fsp->fh->fd = SMB_VFS_NEXT_OPEN(handle, fname, fsp, flags, mode);
+	fsp->fh->fd = SMB_VFS_NEXT_OPEN(handle, smb_fname, fsp, flags, mode);
 
 	if (!file_existed && fsp->fh->fd != -1) {
 		/* File was created. Inherit from parent directory. */
diff --git a/source3/modules/vfs_acl_xattr.c b/source3/modules/vfs_acl_xattr.c
index 05156f8..efcc877 100644
--- a/source3/modules/vfs_acl_xattr.c
+++ b/source3/modules/vfs_acl_xattr.c
@@ -417,7 +417,7 @@ static NTSTATUS inherit_new_acl(vfs_handle_struct *handle,
 *********************************************************************/
 
 static int open_acl_xattr(vfs_handle_struct *handle,
-					const char *fname,
+					struct smb_filename *smb_fname,
 					files_struct *fsp,
 					int flags,
 					mode_t mode)
@@ -425,7 +425,17 @@ static int open_acl_xattr(vfs_handle_struct *handle,
 	uint32_t access_granted = 0;
 	struct security_descriptor *pdesc = NULL;
 	bool file_existed = true;
-	NTSTATUS status = get_nt_acl_xattr_internal(handle,
+	char *fname = NULL;
+	NTSTATUS status;
+
+	status = get_full_smb_filename(talloc_tos(), smb_fname,
+				       &fname);
+	if (!NT_STATUS_IS_OK(status)) {
+		errno = map_errno_from_nt_status(status);
+		return -1;
+	}
+
+	status = get_nt_acl_xattr_internal(handle,
 					NULL,
 					fname,
 					(OWNER_SECURITY_INFORMATION |
@@ -441,7 +451,7 @@ static int open_acl_xattr(vfs_handle_struct *handle,
 		if (!NT_STATUS_IS_OK(status)) {
 			DEBUG(10,("open_acl_xattr: file %s open "
 				"refused with error %s\n",
-				fname,
+				smb_fname_str_dbg(smb_fname),
 				nt_errstr(status) ));
 			errno = map_errno_from_nt_status(status);
 			return -1;
@@ -452,10 +462,10 @@ static int open_acl_xattr(vfs_handle_struct *handle,
 
 	DEBUG(10,("open_acl_xattr: get_nt_acl_attr_internal for "
 		"file %s returned %s\n",
-		fname,
+		smb_fname_str_dbg(smb_fname),
 		nt_errstr(status) ));
 
-	fsp->fh->fd = SMB_VFS_NEXT_OPEN(handle, fname, fsp, flags, mode);
+	fsp->fh->fd = SMB_VFS_NEXT_OPEN(handle, smb_fname, fsp, flags, mode);
 
 	if (!file_existed && fsp->fh->fd != -1) {
 		/* File was created. Inherit from parent directory. */
diff --git a/source3/modules/vfs_audit.c b/source3/modules/vfs_audit.c
index 4000580..2897cef 100644
--- a/source3/modules/vfs_audit.c
+++ b/source3/modules/vfs_audit.c
@@ -33,7 +33,7 @@ static void audit_disconnect(vfs_handle_struct *handle);
 static SMB_STRUCT_DIR *audit_opendir(vfs_handle_struct *handle, const char *fname, const char *mask, uint32 attr);
 static int audit_mkdir(vfs_handle_struct *handle, const char *path, mode_t mode);
 static int audit_rmdir(vfs_handle_struct *handle, const char *path);
-static int audit_open(vfs_handle_struct *handle, const char *fname, files_struct *fsp, int flags, mode_t mode);
+static int audit_open(vfs_handle_struct *handle, struct smb_filename *smb_fname, files_struct *fsp, int flags, mode_t mode);
 static int audit_close(vfs_handle_struct *handle, files_struct *fsp);
 static int audit_rename(vfs_handle_struct *handle, const char *oldname, const char *newname);
 static int audit_unlink(vfs_handle_struct *handle, const char *path);
@@ -187,14 +187,16 @@ static int audit_rmdir(vfs_handle_struct *handle, const char *path)
 	return result;
 }
 
-static int audit_open(vfs_handle_struct *handle, const char *fname, files_struct *fsp, int flags, mode_t mode)
+static int audit_open(vfs_handle_struct *handle,
+		      struct smb_filename *smb_fname, files_struct *fsp,
+		      int flags, mode_t mode)
 {
 	int result;
 
-	result = SMB_VFS_NEXT_OPEN(handle, fname, fsp, flags, mode);
+	result = SMB_VFS_NEXT_OPEN(handle, smb_fname, fsp, flags, mode);
 
 	syslog(audit_syslog_priority(handle), "open %s (fd %d) %s%s%s\n", 
-	       fname, result,
+	       smb_fname_str_dbg(smb_fname), result,
 	       ((flags & O_WRONLY) || (flags & O_RDWR)) ? "for writing " : "", 
 	       (result < 0) ? "failed: " : "",
 	       (result < 0) ? strerror(errno) : "");
diff --git a/source3/modules/vfs_cap.c b/source3/modules/vfs_cap.c
index e26d29d..4525fa1 100644
--- a/source3/modules/vfs_cap.c
+++ b/source3/modules/vfs_cap.c
@@ -106,16 +106,30 @@ static int cap_rmdir(vfs_handle_struct *handle, const char *path)
 	return SMB_VFS_NEXT_RMDIR(handle, cappath);
 }
 
-static int cap_open(vfs_handle_struct *handle, const char *fname, files_struct *fsp, int flags, mode_t mode)
+static int cap_open(vfs_handle_struct *handle, struct smb_filename *smb_fname,
+		    files_struct *fsp, int flags, mode_t mode)
 {
-	char *cappath = capencode(talloc_tos(), fname);
+	char *cappath;
+	char *tmp_base_name = NULL;
+	int ret;
+
+	cappath = capencode(talloc_tos(), smb_fname->base_name);
 
 	if (!cappath) {
 		errno = ENOMEM;
 		return -1;
 	}
-	DEBUG(3,("cap: cap_open for %s\n", fname));
-	return SMB_VFS_NEXT_OPEN(handle, cappath, fsp, flags, mode);
+
+	tmp_base_name = smb_fname->base_name;
+	smb_fname->base_name = cappath;
+
+	DEBUG(3,("cap: cap_open for %s\n", smb_fname_str_dbg(smb_fname)));
+	ret = SMB_VFS_NEXT_OPEN(handle, smb_fname, fsp, flags, mode);
+
+	smb_fname->base_name = tmp_base_name;
+	TALLOC_FREE(cappath);
+
+	return ret;
 }
 
 static int cap_rename(vfs_handle_struct *handle, const char *oldname, const char *newname)
diff --git a/source3/modules/vfs_catia.c b/source3/modules/vfs_catia.c
index 2870254..8d1c87a 100644
--- a/source3/modules/vfs_catia.c
+++ b/source3/modules/vfs_catia.c
@@ -133,18 +133,30 @@ static SMB_STRUCT_DIRENT *catia_readdir(vfs_handle_struct *handle,
 }
 
 static int catia_open(vfs_handle_struct *handle,
-		      const char *fname,
+		      struct smb_filename *smb_fname,
 		      files_struct *fsp,
 		      int flags,
 		      mode_t mode)
 {
-	char *name = to_unix(talloc_tos(), fname);
+	char *name;
+	char *tmp_base_name;
+	int ret;
 
+	name = to_unix(talloc_tos(), smb_fname->base_name);
 	if (!name) {
 		errno = ENOMEM;
 		return -1;
 	}
-        return SMB_VFS_NEXT_OPEN(handle, name, fsp, flags, mode);
+
+	tmp_base_name = smb_fname->base_name;
+	smb_fname->base_name = name;
+
+	ret = SMB_VFS_NEXT_OPEN(handle, name, fsp, flags, mode);
+
+	smb_fname->base_name = tmp_base_name;
+	TALLOC_FREE(name);
+
+	return ret;
 }
 
 static int catia_rename(vfs_handle_struct *handle,
diff --git a/source3/modules/vfs_commit.c b/source3/modules/vfs_commit.c
index c22e816..6c36322 100644
--- a/source3/modules/vfs_commit.c
+++ b/source3/modules/vfs_commit.c
@@ -167,7 +167,7 @@ static int commit_connect(
 
 static int commit_open(
 	vfs_handle_struct * handle,
-	const char *	    fname,
+	struct smb_filename *smb_fname,
 	files_struct *	    fsp,
 	int		    flags,
 	mode_t		    mode)
@@ -179,7 +179,7 @@ static int commit_open(
 
         /* Don't bother with read-only files. */
         if ((flags & O_ACCMODE) == O_RDONLY) {
-                return SMB_VFS_NEXT_OPEN(handle, fname, fsp, flags, mode);
+                return SMB_VFS_NEXT_OPEN(handle, smb_fname, fsp, flags, mode);
         }
 
         /* Read and check module configuration */
@@ -208,7 +208,7 @@ static int commit_open(
                 }
         }
 
-        fd = SMB_VFS_NEXT_OPEN(handle, fname, fsp, flags, mode);
+        fd = SMB_VFS_NEXT_OPEN(handle, smb_fname, fsp, flags, mode);
 	if (fd == -1) {
 		VFS_REMOVE_FSP_EXTENSION(handle, fsp);
 		return fd;
diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c
index 28adce5..0e7ba05 100644
--- a/source3/modules/vfs_default.c
+++ b/source3/modules/vfs_default.c
@@ -214,13 +214,31 @@ static void vfswrap_init_search_op(vfs_handle_struct *handle,
 
 /* File operations */
 
-static int vfswrap_open(vfs_handle_struct *handle,  const char *fname,
-	files_struct *fsp, int flags, mode_t mode)
+static int vfswrap_open(vfs_handle_struct *handle,
+			struct smb_filename *smb_fname,
+			files_struct *fsp, int flags, mode_t mode)
 {
 	int result;
+	NTSTATUS status;
+	char *fname = NULL;
 
 	START_PROFILE(syscall_open);
+
+	/*
+	 * XXX: Should an error be returned if there is a stream rather than
+	 * trying to open a filename with a ':'?
+	 */
+	status = get_full_smb_filename(talloc_tos(), smb_fname,
+				       &fname);
+	if (!NT_STATUS_IS_OK(status)) {
+		errno = map_errno_from_nt_status(status);
+		return -1;
+	}
+
 	result = sys_open(fname, flags, mode);
+
+	TALLOC_FREE(fname);
+
 	END_PROFILE(syscall_open);
 	return result;
 }
diff --git a/source3/modules/vfs_extd_audit.c b/source3/modules/vfs_extd_audit.c
index b59a780..763f154 100644
--- a/source3/modules/vfs_extd_audit.c
+++ b/source3/modules/vfs_extd_audit.c
@@ -36,7 +36,7 @@ static void audit_disconnect(vfs_handle_struct *handle);
 static SMB_STRUCT_DIR *audit_opendir(vfs_handle_struct *handle, const char *fname, const char *mask, uint32 attr);
 static int audit_mkdir(vfs_handle_struct *handle, const char *path, mode_t mode);
 static int audit_rmdir(vfs_handle_struct *handle, const char *path);
-static int audit_open(vfs_handle_struct *handle, const char *fname, files_struct *fsp, int flags, mode_t mode);
+static int audit_open(vfs_handle_struct *handle, struct smb_filename *smb_fname, files_struct *fsp, int flags, mode_t mode);
 static int audit_close(vfs_handle_struct *handle, files_struct *fsp);
 static int audit_rename(vfs_handle_struct *handle, const char *oldname, const char *newname);
 static int audit_unlink(vfs_handle_struct *handle, const char *path);
@@ -216,21 +216,23 @@ static int audit_rmdir(vfs_handle_struct *handle, const char *path)
 	return result;
 }
 
-static int audit_open(vfs_handle_struct *handle, const char *fname, files_struct *fsp, int flags, mode_t mode)
+static int audit_open(vfs_handle_struct *handle,
+		      struct smb_filename *smb_fname, files_struct *fsp,
+		      int flags, mode_t mode)
 {
 	int result;
 
-	result = SMB_VFS_NEXT_OPEN(handle, fname, fsp, flags, mode);
+	result = SMB_VFS_NEXT_OPEN(handle, smb_fname, fsp, flags, mode);
 
 	if (lp_syslog() > 0) {
 		syslog(audit_syslog_priority(handle), "open %s (fd %d) %s%s%s\n",
-		       fname, result,
+		       smb_fname_str_dbg(smb_fname), result,
 		       ((flags & O_WRONLY) || (flags & O_RDWR)) ? "for writing " : "",
 		       (result < 0) ? "failed: " : "",
 		       (result < 0) ? strerror(errno) : "");
 	}
 	DEBUG(2, ("vfs_extd_audit: open %s %s %s\n",
-	       fname,
+	       smb_fname_str_dbg(smb_fname),
 	       (result < 0) ? "failed: " : "",
 	       (result < 0) ? strerror(errno) : ""));
 
diff --git a/source3/modules/vfs_full_audit.c b/source3/modules/vfs_full_audit.c
index e2d08b4..5558b2f 100644
--- a/source3/modules/vfs_full_audit.c
+++ b/source3/modules/vfs_full_audit.c
@@ -111,7 +111,7 @@ static int smb_full_audit_closedir(vfs_handle_struct *handle,
 static void smb_full_audit_init_search_op(vfs_handle_struct *handle,
 			SMB_STRUCT_DIR *dirp);
 static int smb_full_audit_open(vfs_handle_struct *handle,
-		      const char *fname, files_struct *fsp, int flags, mode_t mode);
+		      struct smb_filename *smb_fnmae, files_struct *fsp, int flags, mode_t mode);
 static NTSTATUS smb_full_audit_create_file(vfs_handle_struct *handle,
 				      struct smb_request *req,


-- 
Samba Shared Repository


More information about the samba-cvs mailing list