[SCM] Samba Shared Repository - branch v3-3-test updated - release-3-2-0pre2-5226-g5a5dcd1

Volker Lendecke vlendec at samba.org
Mon Apr 20 12:06:49 GMT 2009


The branch, v3-3-test has been updated
       via  5a5dcd125fe236ddd93a6e56ae361fc84e306185 (commit)
      from  bfd1d245bd27fe5c14d786702da07e5f88fb03f5 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-3-test


- Log -----------------------------------------------------------------
commit 5a5dcd125fe236ddd93a6e56ae361fc84e306185
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Apr 15 13:01:09 2009 +0200

    Do not use the file system GET_REAL_FILENAME for mangled names

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

Summary of changes:
 source/smbd/filename.c |   30 +++++++++++++++++++++++-------
 1 files changed, 23 insertions(+), 7 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/smbd/filename.c b/source/smbd/filename.c
index 003cb0f..031668f 100644
--- a/source/smbd/filename.c
+++ b/source/smbd/filename.c
@@ -33,6 +33,9 @@ static NTSTATUS build_stream_path(TALLOC_CTX *mem_ctx,
 				  const char *streamname,
 				  SMB_STRUCT_STAT *pst,
 				  char **path);
+static int get_real_filename_mangled(connection_struct *conn, const char *path,
+				     const char *name, TALLOC_CTX *mem_ctx,
+				     char **found_name);
 
 /****************************************************************************
  Mangle the 2nd name and check if it is then equal to the first name.
@@ -447,7 +450,7 @@ NTSTATUS unix_convert(TALLOC_CTX *ctx,
 			 */
 
 			if (name_has_wildcard ||
-			    (SMB_VFS_GET_REAL_FILENAME(
+			    (get_real_filename_mangled(
 				     conn, dirpath, start,
 				     talloc_tos(), &found_name) == -1)) {
 				char *unmangled;
@@ -789,15 +792,12 @@ static bool fname_equal(const char *name1, const char *name2,
  If the name looks like a mangled name then try via the mangling functions
 ****************************************************************************/
 
-int get_real_filename(connection_struct *conn, const char *path,
-		      const char *name, TALLOC_CTX *mem_ctx,
-		      char **found_name)
+static int get_real_filename_mangled(connection_struct *conn, const char *path,
+				     const char *name, TALLOC_CTX *mem_ctx,
+				     char **found_name)
 {
-	struct smb_Dir *cur_dir;
-	const char *dname;
 	bool mangled;
 	char *unmangled_name = NULL;
-	long curpos;
 
 	mangled = mangle_is_mangled(name, conn->params);
 
@@ -838,8 +838,24 @@ int get_real_filename(connection_struct *conn, const char *path,
 			/* Name is now unmangled. */
 			name = unmangled_name;
 		}
+		return get_real_filename(conn, path, name, mem_ctx,
+					 found_name);
 	}
 
+	return SMB_VFS_GET_REAL_FILENAME(conn, path, name, mem_ctx,
+					 found_name);
+}
+
+int get_real_filename(connection_struct *conn, const char *path,
+		      const char *name, TALLOC_CTX *mem_ctx,
+		      char **found_name)
+{
+	struct smb_Dir *cur_dir;
+	const char *dname;
+	bool mangled;
+	char *unmangled_name = NULL;
+	long curpos;
+
 	/* open the directory */
 	if (!(cur_dir = OpenDir(talloc_tos(), conn, path, NULL, 0))) {
 		DEBUG(3,("scan dir didn't open dir [%s]\n",path));


-- 
Samba Shared Repository


More information about the samba-cvs mailing list