From 58b680446f5fe03434dc914db89fbba5b6152201 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 13 Jan 2009 15:42:56 -0800 Subject: [PATCH] From boyang - ensure we never "return" from a forked child, always _exit(). Jeremy. --- source3/winbindd/winbindd_cm.c | 6 +++--- source3/winbindd/winbindd_dual.c | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c index 4e5659d9031..962b6e6d1b7 100644 --- a/source3/winbindd/winbindd_cm.c +++ b/source3/winbindd/winbindd_cm.c @@ -216,7 +216,7 @@ static bool fork_child_dc_connect(struct winbindd_domain *domain) if (!override_logfile) { if (asprintf(&lfile, "%s/log.winbindd-dc-connect", get_dyn_LOGFILEBASE()) == -1) { DEBUG(0, ("fork_child_dc_connect: out of memory.\n")); - return false; + _exit(1); } } @@ -226,7 +226,7 @@ static bool fork_child_dc_connect(struct winbindd_domain *domain) MSG_WINBIND_FAILED_TO_GO_ONLINE, (uint8 *)domain->name, strlen(domain->name)+1); - _exit(0); + _exit(1); } SAFE_FREE(lfile); @@ -238,7 +238,7 @@ static bool fork_child_dc_connect(struct winbindd_domain *domain) MSG_WINBIND_FAILED_TO_GO_ONLINE, (uint8 *)domain->name, strlen(domain->name)+1); - _exit(0); + _exit(1); } if ((!get_dcs(mem_ctx, domain, &dcs, &num_dcs)) || (num_dcs == 0)) { diff --git a/source3/winbindd/winbindd_dual.c b/source3/winbindd/winbindd_dual.c index 9f91153c4a4..9be8bafdd74 100644 --- a/source3/winbindd/winbindd_dual.c +++ b/source3/winbindd/winbindd_dual.c @@ -1393,7 +1393,7 @@ static bool fork_domain_child(struct winbindd_child *child) DEBUG(0,("select error occured\n")); TALLOC_FREE(frame); perror("select"); - return False; + _exit(1); } /* fetch a request from the main daemon */ @@ -1401,7 +1401,7 @@ static bool fork_domain_child(struct winbindd_child *child) if (state.finished) { /* we lost contact with our parent */ - exit(0); + _exit(0); } DEBUG(4,("child daemon request %d\n", (int)state.request.cmd)); -- 2.34.1