The branch, v3-3-test has been updated
       via  a9e6c91cd18b8b7b805f4b69f3867ea4bd6bc3ba (commit)
      from  ddaa1bae7567c81fb8e478c439bb970edab2f9c3 (commit)

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


- Log -----------------------------------------------------------------
commit a9e6c91cd18b8b7b805f4b69f3867ea4bd6bc3ba
Author: Jeremy Allison <j...@samba.org>
Date:   Thu Mar 5 17:17:52 2009 -0800

    Fix bug #6161 - smbclient corrupts source path in tar mode
    This was my fault. I broke the smbclient tar argument processing
    in creating the string for chdir when removing pstrings.
    Jeremy.

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

Summary of changes:
 source/client/clitar.c |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/client/clitar.c b/source/client/clitar.c
index 5a97446..d6c02df 100644
--- a/source/client/clitar.c
+++ b/source/client/clitar.c
@@ -1513,6 +1513,7 @@ int process_tar(void)
 
                                        if (strrchr_m(cliplist[i], '\\')) {
                                                char *p;
+                                               char saved_char;
                                                char *saved_dir = 
talloc_strdup(ctx,
                                                                        
client_get_cur_dir());
                                                if (!saved_dir) {
@@ -1531,13 +1532,28 @@ int process_tar(void)
                                                if (!tarmac) {
                                                        return 1;
                                                }
+                                               /*
+                                                * Strip off the last \\xxx
+                                                * xxx element of tarmac to set
+                                                * it as current directory.
+                                                */
                                                p = strrchr_m(tarmac, '\\');
                                                if (!p) {
                                                        return 1;
                                                }
+                                               saved_char = p[1];
                                                p[1] = '\0';
+
                                                client_set_cur_dir(tarmac);
 
+                                               /*
+                                                * Restore the character we
+                                                * just replaced to
+                                                * put the pathname
+                                                * back as it was.
+                                                */
+                                               p[1] = saved_char;
+
                                                DEBUG(5, ("process_tar, do_list 
with tarmac: %s\n", tarmac));
                                                
do_list(tarmac,attribute,do_tar, False, True);
 


-- 
Samba Shared Repository

Reply via email to