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