[SCM] Samba Shared Repository - branch v4-13-stable updated

Karolin Seeger kseeger at samba.org
Wed Dec 16 12:21:08 UTC 2020


The branch, v4-13-stable has been updated
       via  916472aebc9 VERSION: Disable GIT_SNAPSHOT for the 4.13.3 release.
       via  1648eed2470 WHATSNEW: Add release notes for Samba 4.13.3.
       via  670c33fe9cb vfs_zfsacl: add missing inherited flag on hidden "magic" everyone@ ACE
       via  67d42392a31 vfs_zfsacl: reformatting
       via  e3d6d452118 s4/samba: call force_check_log_size() in standard_new_task()
       via  db202fc3efc s4/samba: call force_check_log_size() in standard_accept_connection()
       via  f89daf8d255 s4/samba: call force_check_log_size() in prefork_reload_after_fork()
       via  7258fc076ad s4: call reopen_logs_internal() in the SIGHUP handler of the prefork process model
       via  fa2ea13ec04 s4: replace low-level SIGUP handler with a tevent handler
       via  504c6e03018 s4: install tevent tracing hooks to trigger logfile rotation
       via  69a8fb4f971 s4: add samba server tevent trace helper stuff
       via  80401025504 debug: detect logrotation by checking inode number
       via  e7df21ac640 debug: pass struct debug_class *config to do_one_check_log_size()
       via  39efb02c6b4 debug: pass struct debug_class *config to reopen_one_log()
       via  99ea8cd6dfa loadparm: setup debug subsystem setting max_log_size from config
       via  54d3d3cbf49 s3: smbd: Quiet log messages from usershares for an unknown share.
       via  f7490ec9d94 s3-libads: Pass timeout to open_socket_out in ms
       via  585c49f21f7 vfs_glusterfs: print exact cmdline for disabling write-behind translator
       via  587fa331f62 manpages/vfs_glusterfs: Mention silent skipping of write-behind translator
       via  2ea7b5c43e8 selftest: Remove samba3.blackbox.smbclient_tar from flapping tests
       via  8cec2732890 clitar: Use do_list()'s recursion in clitar.c
       via  2954051aa6d s3/script/tests: Ensure all remote test files are removed
       via  5f1772d94a3 s3/script/tests: call smbclient deltree to remove remote files
       via  257ce5ed541 s3/script/tests: Make smb_client 'die' behaviour configurable
       via  a0ab7adfd78 s3/script/tests: Remove make_path (for remote dir)
       via  c19198e8732 selftest: make samba3.blackbox.smbclient_tar runnable (even manually)
       via  53a91d6cdc0 s3/script/tests: Fix samba3.blackbox.smbclient_tarmode cleanup
       via  896d93091ab s3/script: Use smbclient deltree to clean up smbclient_tarmode subdir
       via  5908aebf364 s3/script/tests: Use tarmode share for samba3.blackbox.smbclient_tar*
       via  5143b487532 s3/script/test: Use different testdir for samba3.blackbox.smbclient_tarmode
       via  7fb13330380 selftest: Add a new tarmode shares
       via  d67c3ea864b s3/script/tests: Fix 'Unrecognized option(s) passed to mkpath()' error
       via  e9b2be96ebc Revert "vfs_ceph: drop fdopendir handler"
       via  441bf80265f smbclient: Fix recursive mget
       via  67364d982d9 test3: Add a test showing that smbclient recursive mget is broken
       via  b4be2f994d1 smbclient: Slightly simplify do_mget()
       via  ddb0d43f0ae smbclient: Remove the "abort_mget" variable
       via  8c82d0fd49b vfs_shadow_copy2: Preserve all open flags assuming ROFS
       via  7e9d27271db s3: spoolss: Make parameters in call to user_ok_token() match all other uses.
       via  61c8a44895e s3: smbd: Don't overwrite contents of fsp->aio_requests[0] with NULL via TALLOC_FREE().
       via  68f19debb74 interface: fix if_index is not parsed correctly
       via  76f07c13cd6 s3: modules: gluster. Fix the error I made in preventing talloc leaks from a function.
       via  c58689c9aad libcli: smb2: Never print length if smb2_signing_key_valid() fails for crypto blob.
       via  4337a6378db s3-vfs_glusterfs: always disable write-behind translator
       via  87b220530b2 VERSION: Bump version up to 4.13.3...
      from  ffef4e947a6 VERSION: Disable GIT_SNAPSHOT for the 4.13.2 release.

https://git.samba.org/?p=samba.git;a=shortlog;h=v4-13-stable


- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 VERSION                                            |   2 +-
 WHATSNEW.txt                                       |  75 +++++++++-
 docs-xml/manpages/vfs_glusterfs.8.xml              |   9 ++
 lib/param/loadparm.c                               |   1 +
 lib/util/debug.c                                   |  63 ++++++---
 libcli/smb/smb2_signing.c                          |   9 +-
 selftest/flapping                                  |   1 -
 selftest/target/Samba3.pm                          |  11 ++
 source3/client/client.c                            | 152 ++++++---------------
 source3/client/clitar.c                            |  41 ++----
 source3/lib/interface.c                            |   2 +-
 source3/libads/ldap.c                              |   4 +-
 source3/modules/vfs_ceph.c                         |  15 +-
 source3/modules/vfs_glusterfs.c                    |  47 +++++--
 source3/modules/vfs_shadow_copy2.c                 |   4 +-
 source3/modules/vfs_zfsacl.c                       |   6 +-
 source3/param/loadparm.c                           |  10 ++
 source3/rpc_server/spoolss/srv_spoolss_nt.c        |   3 +-
 source3/script/tests/test_smbclient_mget.sh        |  39 ++++++
 source3/script/tests/test_smbclient_tarmode.pl     |  62 +++++++--
 source3/script/tests/test_smbclient_tarmode.sh     |  29 ++--
 source3/selftest/tests.py                          |  22 ++-
 source3/smbd/close.c                               |  14 +-
 source3/wscript                                    |   3 +
 source4/smbd/process_prefork.c                     |  16 ++-
 source4/smbd/process_standard.c                    |   4 +
 source4/smbd/server.c                              |  46 +++++++
 source4/smbd/server_util.c                         |  94 +++++++++++++
 .../winbindd_ads.h => source4/smbd/server_util.h   |  18 +--
 source4/smbd/wscript_build                         |   9 +-
 30 files changed, 580 insertions(+), 231 deletions(-)
 create mode 100755 source3/script/tests/test_smbclient_mget.sh
 create mode 100644 source4/smbd/server_util.c
 copy source3/winbindd/winbindd_ads.h => source4/smbd/server_util.h (67%)


Changeset truncated at 500 lines:

diff --git a/VERSION b/VERSION
index 17232cb0574..3ffbca609ac 100644
--- a/VERSION
+++ b/VERSION
@@ -25,7 +25,7 @@
 ########################################################
 SAMBA_VERSION_MAJOR=4
 SAMBA_VERSION_MINOR=13
-SAMBA_VERSION_RELEASE=2
+SAMBA_VERSION_RELEASE=3
 
 ########################################################
 # If a official release has a serious bug              #
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index a3ce5cc3dd5..947fd89e3c3 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,3 +1,74 @@
+                   ==============================
+                   Release Notes for Samba 4.13.3
+                          December 15, 2020
+                   ==============================
+
+
+This is the latest stable release of the Samba 4.13 release series.
+
+
+Changes since 4.13.2
+--------------------
+
+o  Jeremy Allison <jra at samba.org>
+   * BUG 14210: libcli: smb2: Never print length if smb2_signing_key_valid()
+     fails for crypto blob.
+   * BUG 14486: s3: modules: gluster. Fix the error I made in preventing talloc
+     leaks from a function. 
+   * BUG 14515: s3: smbd: Don't overwrite contents of fsp->aio_requests[0] with
+     NULL via TALLOC_FREE().
+   * BUG 14568: s3: spoolss: Make parameters in call to user_ok_token() match
+     all other uses.
+   * BUG 14590: s3: smbd: Quiet log messages from usershares for an unknown
+     share.
+
+o  Ralph Boehme <slow at samba.org>
+   * BUG 14248: samba process does not honor max log size.
+   * BUG 14587: vfs_zfsacl: Add missing inherited flag on hidden "magic"
+     everyone@ ACE.
+
+o  Isaac Boukris <iboukris at gmail.com>
+   * BUG 13124: s3-libads: Pass timeout to open_socket_out in ms.
+
+o  Günther Deschner <gd at samba.org>
+   * BUG 14486: s3-vfs_glusterfs: Always disable write-behind translator.
+
+o  Volker Lendecke <vl at samba.org>
+   * BUG 14517: smbclient: Fix recursive mget.
+   * BUG 14581: clitar: Use do_list()'s recursion in clitar.c.
+
+o  Anoop C S <anoopcs at samba.org>
+   * BUG 14486: manpages/vfs_glusterfs: Mention silent skipping of write-behind
+     translator.
+   * BUG 14573: vfs_shadow_copy2: Preserve all open flags assuming ROFS.
+
+o  Jones Syue <jonessyue at qnap.com>
+   * BUG 14514: interface: Fix if_index is not parsed correctly.
+
+
+#######################################
+Reporting bugs & Development Discussion
+#######################################
+
+Please discuss this release on the samba-technical mailing list or by
+joining the #samba-technical IRC channel on irc.freenode.net.
+
+If you do report problems then please try to send high quality
+feedback. If you don't provide vital information to help us track down
+the problem then you will probably be ignored.  All bug reports should
+be filed under the Samba 4.1 and newer product in the project's Bugzilla
+database (https://bugzilla.samba.org/).
+
+
+======================================================================
+== Our Code, Our Bugs, Our Responsibility.
+== The Samba Team
+======================================================================
+
+
+Release notes for older releases follow:
+----------------------------------------
+
                    ==============================
                    Release Notes for Samba 4.13.2
                           November 03, 2020
@@ -104,8 +175,8 @@ database (https://bugzilla.samba.org/).
 ======================================================================
 
 
-Release notes for older releases follow:
-----------------------------------------
+----------------------------------------------------------------------
+
 
                    ==============================
                    Release Notes for Samba 4.13.1
diff --git a/docs-xml/manpages/vfs_glusterfs.8.xml b/docs-xml/manpages/vfs_glusterfs.8.xml
index 7a4da1af919..d25135e14ac 100644
--- a/docs-xml/manpages/vfs_glusterfs.8.xml
+++ b/docs-xml/manpages/vfs_glusterfs.8.xml
@@ -179,7 +179,16 @@
                 translator and refuse to connect if detected.
                 Please disable the write-behind translator for the GlusterFS
                 volume to allow the plugin to connect to the volume.
+                The write-behind translator can easily be disabled via calling
+                <programlisting>
+                        gluster volume set <volumename> performance.write-behind off
+                </programlisting> on the commandline.
 	</para>
+        <para>
+                With GlusterFS versions >= 9, we silently bypass write-behind
+                translator during initial connect and failure is avoided.
+        </para>
+
 </refsect1>
 
 
diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c
index e041f4fb01b..006caabc092 100644
--- a/lib/param/loadparm.c
+++ b/lib/param/loadparm.c
@@ -3190,6 +3190,7 @@ static bool lpcfg_update(struct loadparm_context *lp_ctx)
 	settings.debug_pid = lp_ctx->globals->debug_pid;
 	settings.debug_uid = lp_ctx->globals->debug_uid;
 	settings.debug_class = lp_ctx->globals->debug_class;
+	settings.max_log_size = lp_ctx->globals->max_log_size;
 	debug_set_settings(&settings, lp_ctx->globals->logging,
 			   lp_ctx->globals->syslog,
 			   lp_ctx->globals->syslog_only);
diff --git a/lib/util/debug.c b/lib/util/debug.c
index 08ffee35a1f..b19c739d4cd 100644
--- a/lib/util/debug.c
+++ b/lib/util/debug.c
@@ -113,6 +113,8 @@ struct debug_class {
 	 */
 	char *logfile;
 	int fd;
+	/* inode number of the logfile to detect logfile rotation */
+	ino_t ino;
 };
 
 static const char *default_classname_table[] = {
@@ -1082,14 +1084,17 @@ static void debug_callback_log(const char *msg, int msg_level)
  Fix from dgibson at linuxcare.com.
 **************************************************************************/
 
-static bool reopen_one_log(int *fd, const char *logfile)
+static bool reopen_one_log(struct debug_class *config)
 {
-	int old_fd = *fd;
+	int old_fd = config->fd;
+	const char *logfile = config->logfile;
+	struct stat st;
 	int new_fd;
+	int ret;
 
 	if (logfile == NULL) {
 		debug_close_fd(old_fd);
-		*fd = -1;
+		config->fd = -1;
 		return true;
 	}
 
@@ -1104,8 +1109,18 @@ static bool reopen_one_log(int *fd, const char *logfile)
 
 	debug_close_fd(old_fd);
 	smb_set_close_on_exec(new_fd);
-	*fd = new_fd;
+	config->fd = new_fd;
 
+	ret = fstat(new_fd, &st);
+	if (ret != 0) {
+		log_overflow = true;
+		DBG_ERR("Unable to fstat() new log file '%s': %s\n",
+			logfile, strerror(errno));
+		log_overflow = false;
+		return false;
+	}
+
+	config->ino = st.st_ino;
 	return true;
 }
 
@@ -1164,8 +1179,7 @@ bool reopen_logs_internal(void)
 	state.reopening_logs = true;
 
 	for (i = DBGC_ALL; i < debug_num_classes; i++) {
-		ok = reopen_one_log(&dbgc_config[i].fd,
-				    dbgc_config[i].logfile);
+		ok = reopen_one_log(&dbgc_config[i]);
 		if (!ok) {
 			break;
 		}
@@ -1249,51 +1263,62 @@ bool need_to_check_log_size(void)
  Check to see if the log has grown to be too big.
  **************************************************************************/
 
-static void do_one_check_log_size(off_t maxlog, int *_fd, const char *logfile)
+static void do_one_check_log_size(off_t maxlog, struct debug_class *config)
 {
-	char name[strlen(logfile) + 5];
+	char name[strlen(config->logfile) + 5];
 	struct stat st;
-	int fd = *_fd;
 	int ret;
+	bool reopen = false;
 	bool ok;
 
 	if (maxlog == 0) {
 		return;
 	}
 
-	ret = fstat(fd, &st);
+	ret = stat(config->logfile, &st);
 	if (ret != 0) {
 		return;
 	}
-	if (st.st_size < maxlog ) {
+	if (st.st_size >= maxlog ) {
+		reopen = true;
+	}
+
+	if (st.st_ino != config->ino) {
+		reopen = true;
+	}
+
+	if (!reopen) {
 		return;
 	}
 
 	/* reopen_logs_internal() modifies *_fd */
 	(void)reopen_logs_internal();
-	fd = *_fd;
 
-	if (fd <= 2) {
+	if (config->fd <= 2) {
 		return;
 	}
-	ret = fstat(fd, &st);
+	ret = fstat(config->fd, &st);
 	if (ret != 0) {
+		config->ino = (ino_t)0;
 		return;
 	}
+
+	config->ino = st.st_ino;
+
 	if (st.st_size < maxlog) {
 		return;
 	}
 
-	snprintf(name, sizeof(name), "%s.old", logfile);
+	snprintf(name, sizeof(name), "%s.old", config->logfile);
 
-	(void)rename(logfile, name);
+	(void)rename(config->logfile, name);
 
 	ok = reopen_logs_internal();
 	if (ok) {
 		return;
 	}
 	/* We failed to reopen a log - continue using the old name. */
-	(void)rename(name, logfile);
+	(void)rename(name, config->logfile);
 }
 
 static void do_check_log_size(off_t maxlog)
@@ -1307,9 +1332,7 @@ static void do_check_log_size(off_t maxlog)
 		if (dbgc_config[i].logfile == NULL) {
 			continue;
 		}
-		do_one_check_log_size(maxlog,
-				      &dbgc_config[i].fd,
-				      dbgc_config[i].logfile);
+		do_one_check_log_size(maxlog, &dbgc_config[i]);
 	}
 }
 
diff --git a/libcli/smb/smb2_signing.c b/libcli/smb/smb2_signing.c
index 623fc23fb18..cc03607d789 100644
--- a/libcli/smb/smb2_signing.c
+++ b/libcli/smb/smb2_signing.c
@@ -92,8 +92,7 @@ NTSTATUS smb2_signing_sign_pdu(struct smb2_signing_key *signing_key,
 	}
 
 	if (!smb2_signing_key_valid(signing_key)) {
-		DBG_WARNING("Wrong session key length %zu for SMB2 signing\n",
-			    signing_key->blob.length);
+		DBG_WARNING("No signing key for SMB2 signing\n");
 		return NT_STATUS_ACCESS_DENIED;
 	}
 
@@ -416,8 +415,7 @@ NTSTATUS smb2_signing_encrypt_pdu(struct smb2_signing_key *encryption_key,
 	tf = (uint8_t *)vector[0].iov_base;
 
 	if (!smb2_signing_key_valid(encryption_key)) {
-		DBG_WARNING("Wrong encryption key length %zu for SMB2 signing\n",
-			    encryption_key->blob.length);
+		DBG_WARNING("No encryption key for SMB2 signing\n");
 		return NT_STATUS_ACCESS_DENIED;
 	}
 
@@ -613,8 +611,7 @@ NTSTATUS smb2_signing_decrypt_pdu(struct smb2_signing_key *decryption_key,
 	tf = (uint8_t *)vector[0].iov_base;
 
 	if (!smb2_signing_key_valid(decryption_key)) {
-		DBG_WARNING("Wrong decryption key length %zu for SMB2 signing\n",
-			    decryption_key->blob.length);
+		DBG_WARNING("No decryption key for SMB2 signing\n");
 		return NT_STATUS_ACCESS_DENIED;
 	}
 
diff --git a/selftest/flapping b/selftest/flapping
index c9f0adbf1bd..8c3f9e8969a 100644
--- a/selftest/flapping
+++ b/selftest/flapping
@@ -31,6 +31,5 @@
 # This test just is not reliable in finding the max search limit
 #
 ^samba4.ldap.notification.python\(.*\).__main__.LDAPNotificationTest.test_max_search
-^samba3.blackbox.smbclient_tar.* # fails very, very often on sn-devel
 ^samba3.blackbox.smbclient_s3.*.sending a message to the remote server # flakey on sn-devel-104 and sn-devel-144
 ^samba3.blackbox.smbclient_s3.*.creating a good symlink and deleting it by path # flakey on sn-devel-104 and sn-devel-144
diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm
index 0a8cefa811d..e141f102ef1 100755
--- a/selftest/target/Samba3.pm
+++ b/selftest/target/Samba3.pm
@@ -1334,6 +1334,9 @@ sub setup_fileserver
 	my $tarmode_sharedir="$share_dir/tarmode";
 	push(@dirs,$tarmode_sharedir);
 
+	my $tarmode2_sharedir="$share_dir/tarmode2";
+	push(@dirs,$tarmode2_sharedir);
+
 	my $smbcacls_sharedir="$share_dir/smbcacls";
 	push(@dirs,$smbcacls_sharedir);
 
@@ -1362,6 +1365,14 @@ sub setup_fileserver
 
 	get quota command = $prefix_abs/getset_quota.py
 	set quota command = $prefix_abs/getset_quota.py
+[tarmode]
+	path = $tarmode_sharedir
+	comment = tar test share
+	xattr_tdb:file = $prefix_abs/tarmode-xattr.tdb
+[tarmode2]
+	path = $tarmode2_sharedir
+	comment = tar test share
+	xattr_tdb:file = $prefix_abs/tarmode2-xattr.tdb
 [spotlight]
 	path = $share_dir
 	spotlight = yes
diff --git a/source3/client/client.c b/source3/client/client.c
index f65293849d0..8c7ceb644aa 100644
--- a/source3/client/client.c
+++ b/source3/client/client.c
@@ -87,8 +87,6 @@ static char dest_ss_str[INET6_ADDRSTRLEN];
 
 #define SEPARATORS " \t\n\r"
 
-static bool abort_mget = true;
-
 /* timing globals */
 uint64_t get_total_size = 0;
 unsigned int get_total_time_ms = 0;
@@ -1203,12 +1201,10 @@ static NTSTATUS do_mget(struct cli_state *cli_state, struct file_info *finfo,
 		    const char *dir)
 {
 	TALLOC_CTX *ctx = talloc_tos();
-	NTSTATUS status = NT_STATUS_OK;
-	char *rname = NULL;
-	char *quest = NULL;
-	char *saved_curdir = NULL;
-	char *mget_mask = NULL;
-	char *new_cd = NULL;
+	const char *client_cwd = NULL;
+	size_t client_cwd_len;
+	char *path = NULL;
+	char *local_path = NULL;
 
 	if (!finfo->name) {
 		return NT_STATUS_OK;
@@ -1217,121 +1213,63 @@ static NTSTATUS do_mget(struct cli_state *cli_state, struct file_info *finfo,
 	if (strequal(finfo->name,".") || strequal(finfo->name,".."))
 		return NT_STATUS_OK;
 
-	if (abort_mget)	{
-		d_printf("mget aborted\n");
-		return NT_STATUS_UNSUCCESSFUL;
-	}
-
-	if (finfo->attr & FILE_ATTRIBUTE_DIRECTORY) {
-		if (asprintf(&quest,
-			 "Get directory %s? ",finfo->name) < 0) {
-			return NT_STATUS_NO_MEMORY;
-		}
-	} else {
-		if (asprintf(&quest,
-			 "Get file %s? ",finfo->name) < 0) {
-			return NT_STATUS_NO_MEMORY;
-		}
-	}
-
-	if (prompt && !yesno(quest)) {
-		SAFE_FREE(quest);
+	if ((finfo->attr & FILE_ATTRIBUTE_DIRECTORY) && !recurse) {
 		return NT_STATUS_OK;
 	}
-	SAFE_FREE(quest);
 
-	if (!(finfo->attr & FILE_ATTRIBUTE_DIRECTORY)) {
-		rname = talloc_asprintf(ctx,
-				"%s%s",
-				client_get_cur_dir(),
-				finfo->name);
-		if (!rname) {
+	if (prompt) {
+		const char *object = (finfo->attr & FILE_ATTRIBUTE_DIRECTORY) ?
+			"directory" : "file";
+		char *quest = NULL;
+		bool ok;
+
+		quest = talloc_asprintf(
+			ctx, "Get %s %s? ", object, finfo->name);
+		if (quest == NULL) {
 			return NT_STATUS_NO_MEMORY;
 		}
-		rname = client_clean_name(ctx, rname);
-		if (rname == NULL) {
-			return NT_STATUS_NO_MEMORY;
+
+		ok = yesno(quest);
+		TALLOC_FREE(quest);
+		if (!ok) {
+			return NT_STATUS_OK;
 		}
-		do_get(rname, finfo->name, false);
-		TALLOC_FREE(rname);
-		return NT_STATUS_OK;
 	}
 
-	/* handle directories */
-	saved_curdir = talloc_strdup(ctx, client_get_cur_dir());
-	if (!saved_curdir) {
+	path = talloc_asprintf(
+		ctx, "%s%c%s", dir, CLI_DIRSEP_CHAR, finfo->name);
+	if (path == NULL) {
 		return NT_STATUS_NO_MEMORY;
 	}
-
-	new_cd = talloc_asprintf(ctx,
-				"%s%s%s",
-				client_get_cur_dir(),
-				finfo->name,
-				CLI_DIRSEP_STR);
-	if (!new_cd) {
+	path = client_clean_name(ctx, path);
+	if (path == NULL) {
 		return NT_STATUS_NO_MEMORY;
 	}
-	new_cd = client_clean_name(ctx, new_cd);
-	if (new_cd == NULL) {
-		return NT_STATUS_NO_MEMORY;
-	}
-	client_set_cur_dir(new_cd);
-
-	string_replace(finfo->name,'\\','/');
-	if (lowercase) {
-		if (!strlower_m(finfo->name)) {
-			return NT_STATUS_INVALID_PARAMETER;
-		}
-	}
 
-	if (!directory_exist(finfo->name) &&
-	    mkdir(finfo->name,0777) != 0) {
-		d_printf("failed to create directory %s\n",finfo->name);
-		client_set_cur_dir(saved_curdir);
-		return map_nt_error_from_unix(errno);
-	}
-
-	if (chdir(finfo->name) != 0) {
-		d_printf("failed to chdir to directory %s\n",finfo->name);
-		client_set_cur_dir(saved_curdir);
-		return map_nt_error_from_unix(errno);
-	}
-
-	mget_mask = talloc_asprintf(ctx,
-			"%s*",
-			client_get_cur_dir());
+	/*
+	 * Skip the path prefix if we've done a remote "cd" when
+	 * creating the local path
+	 */


-- 
Samba Shared Repository



More information about the samba-cvs mailing list