[SCM] Samba Shared Repository - branch v3-0-test updated -
release-3-0-32-40-g2f23017
Jeremy Allison
jra at samba.org
Tue Sep 23 23:48:54 GMT 2008
The branch, v3-0-test has been updated
via 2f230176a19788e659522c7ccccb19b289412166 (commit)
from 72b4ca3ec5714d6056654ecb0fdcbd7d954e6984 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-0-test
- Log -----------------------------------------------------------------
commit 2f230176a19788e659522c7ccccb19b289412166
Author: Jeremy Allison <jra at samba.org>
Date: Tue Sep 23 16:47:21 2008 -0700
Fix winbindd crash in an unusual failure mode. Bug #5737. Based on original patch from shargagan at novell.com
Jeremy.
-----------------------------------------------------------------------
Summary of changes:
source/nsswitch/winbindd_dual.c | 14 +++++++++-----
1 files changed, 9 insertions(+), 5 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source/nsswitch/winbindd_dual.c b/source/nsswitch/winbindd_dual.c
index 396eca7..84c9a1c 100644
--- a/source/nsswitch/winbindd_dual.c
+++ b/source/nsswitch/winbindd_dual.c
@@ -194,10 +194,12 @@ static void async_request_fail(struct winbindd_async_request *state)
TALLOC_FREE(state->reply_timeout_event);
- SMB_ASSERT(state->child_pid != (pid_t)0);
+ /* If child exists and is not already reaped,
+ send kill signal to child. */
- /* If not already reaped, send kill signal to child. */
- if (state->child->pid == state->child_pid) {
+ if ((state->child->pid != (pid_t)0) &&
+ (state->child->pid != (pid_t)-1) &&
+ (state->child->pid == state->child_pid)) {
kill(state->child_pid, SIGTERM);
/*
@@ -293,12 +295,14 @@ static void schedule_async_request(struct winbindd_child *child)
}
if ((child->pid == 0) && (!fork_domain_child(child))) {
- /* Cancel all outstanding requests */
+ /* fork_domain_child failed.
+ Cancel all outstanding requests */
while (request != NULL) {
/* request might be free'd in the continuation */
struct winbindd_async_request *next = request->next;
- request->continuation(request->private_data, False);
+
+ async_request_fail(request);
request = next;
}
return;
--
Samba Shared Repository
More information about the samba-cvs
mailing list