The branch, master has been updated
       via  4e4c306 Fix smbclient/tarmode panic on connecting to Windows 2000 
clients.
       via  aaeb3f5 Ensure we update last_access on the winbindd child struct 
on each request.
      from  f7403d8 s3: skip loading vfs modules for printer connections

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


- Log -----------------------------------------------------------------
commit 4e4c3062bc4eac8ef6311e41e5632f7c17d5b1c3
Author: Salvador I. Gonzalez <sgonza...@codejunkie.net>
Date:   Sat Aug 11 13:46:41 2012 -0400

    Fix smbclient/tarmode panic on connecting to Windows 2000 clients.
    
      'Freed frame ../source3/libsmb/clilist.c:934, expected 
../source3/client/clitar.c:821'
      Cause: (strequal(finfo->name,"..") || strequal(finfo->name,"."))
        evaluates to true, do_tar returns without freeing ctx
    
    Signed-off-by: Jeremy Allison <j...@samba.org>
    
    Autobuild-User(master): Jeremy Allison <j...@samba.org>
    Autobuild-Date(master): Mon Aug 13 23:12:50 CEST 2012 on sn-devel-104

commit aaeb3f5d9b488dd55e47a3cc329b4cb226f2f0e1
Author: Jeremy Allison <j...@samba.org>
Date:   Mon Aug 13 10:34:52 2012 -0700

    Ensure we update last_access on the winbindd child struct on each request.

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

Summary of changes:
 source3/client/clitar.c     |   27 +++++++++++++++++++--------
 source3/winbindd/winbindd.c |    1 +
 2 files changed, 20 insertions(+), 8 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/client/clitar.c b/source3/client/clitar.c
index cae512b..d352571 100644
--- a/source3/client/clitar.c
+++ b/source3/client/clitar.c
@@ -821,8 +821,10 @@ static NTSTATUS do_tar(struct cli_state *cli_state, struct 
file_info *finfo,
        TALLOC_CTX *ctx = talloc_stackframe();
        NTSTATUS status = NT_STATUS_OK;
 
-       if (strequal(finfo->name,"..") || strequal(finfo->name,"."))
-               return NT_STATUS_OK;
+       if (strequal(finfo->name,"..") || strequal(finfo->name,".")) {
+               status = NT_STATUS_OK;
+               goto cleanup;
+       }
 
        /* Is it on the exclude list ? */
        if (!tar_excl && clipn) {
@@ -835,7 +837,8 @@ static NTSTATUS do_tar(struct cli_state *cli_state, struct 
file_info *finfo,
                                client_get_cur_dir(),
                                finfo->name);
                if (!exclaim) {
-                       return NT_STATUS_NO_MEMORY;
+                       status = NT_STATUS_NO_MEMORY;
+                       goto cleanup;
                }
 
                DEBUG(5, ("...tar_re_search: %d\n", tar_re_search));
@@ -844,7 +847,8 @@ static NTSTATUS do_tar(struct cli_state *cli_state, struct 
file_info *finfo,
                                (tar_re_search && mask_match_list(exclaim, 
cliplist, clipn, True))) {
                        DEBUG(3,("Skipping file %s\n", exclaim));
                        TALLOC_FREE(exclaim);
-                       return NT_STATUS_OK;
+                       status = NT_STATUS_OK;
+                       goto cleanup;
                }
                TALLOC_FREE(exclaim);
        }
@@ -856,7 +860,8 @@ static NTSTATUS do_tar(struct cli_state *cli_state, struct 
file_info *finfo,
 
                saved_curdir = talloc_strdup(ctx, client_get_cur_dir());
                if (!saved_curdir) {
-                       return NT_STATUS_NO_MEMORY;
+                       status = NT_STATUS_NO_MEMORY;
+                       goto cleanup;
                }
 
                DEBUG(5, ("strlen(cur_dir)=%d, \
@@ -869,7 +874,8 @@ strlen(finfo->name)=%d\nname=%s,cur_dir=%s\n",
                                client_get_cur_dir(),
                                finfo->name);
                if (!new_cd) {
-                       return NT_STATUS_NO_MEMORY;
+                       status = NT_STATUS_NO_MEMORY;
+                       goto cleanup;
                }
                client_set_cur_dir(new_cd);
 
@@ -888,7 +894,8 @@ strlen(finfo->name)=%d\nname=%s,cur_dir=%s\n",
                                "%s*",
                                client_get_cur_dir());
                if (!mtar_mask) {
-                       return NT_STATUS_NO_MEMORY;
+                       status = NT_STATUS_NO_MEMORY;
+                       goto cleanup;
                }
                DEBUG(5, ("Doing list with mtar_mask: %s\n", mtar_mask));
                do_list(mtar_mask, attribute, do_tar, False, True);
@@ -902,11 +909,15 @@ strlen(finfo->name)=%d\nname=%s,cur_dir=%s\n",
                                        client_get_cur_dir(),
                                        finfo->name);
                if (!rname) {
-                       return NT_STATUS_NO_MEMORY;
+                       status = NT_STATUS_NO_MEMORY;
+                       goto cleanup;
                }
                status = do_atar(rname,finfo->name,finfo);
                TALLOC_FREE(rname);
        }
+
+  cleanup:
+       TALLOC_FREE(ctx);
        return status;
 }
 
diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c
index 685ef48..6d3fece 100644
--- a/source3/winbindd/winbindd.c
+++ b/source3/winbindd/winbindd.c
@@ -621,6 +621,7 @@ static void process_request(struct winbindd_cli_state 
*state)
 
        state->cmd_name = "unknown request";
        state->recv_fn = NULL;
+       state->last_access = time(NULL);
 
        /* Process command */
 


-- 
Samba Shared Repository

Reply via email to