changeset 3938:f55438f449ba HEAD

Don't crash if unknown child exits.
author Timo Sirainen <tss@iki.fi>
date Wed, 25 Jan 2006 19:24:42 +0200
parents 5f86377d3683
children 8ccd711c93db
files src/auth/passdb-checkpassword.c
diffstat 1 files changed, 11 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/auth/passdb-checkpassword.c	Tue Jan 24 20:49:16 2006 +0200
+++ b/src/auth/passdb-checkpassword.c	Wed Jan 25 19:24:42 2006 +0200
@@ -139,11 +139,20 @@
 		}
 
 		request = hash_lookup(module->clients, POINTER_CAST(pid));
+		if (request == NULL) {
+			/* unknown child finished */
+			if (WIFSIGNALED(status)) {
+				i_error("checkpassword: Unknown child %s died "
+					"with signal %d", dec2str(pid),
+					WTERMSIG(status));
+			}
+			continue;
+		}
 
 		if (WIFSIGNALED(status)) {
 			i_error("checkpassword: Child %s died with signal %d",
 				dec2str(pid), WTERMSIG(status));
-		} else if (WIFEXITED(status) && request != NULL) {
+		} else if (WIFEXITED(status)) {
 			auth_request_log_debug(request->request,
 				"checkpassword", "exit_status=%d",
 				request->exit_status);
@@ -153,6 +162,7 @@
 			checkpassword_request_half_finish(request);
 			request = NULL;
 		} else {
+			/* shouldn't happen */
 			auth_request_log_debug(request->request,
 				"checkpassword", "Child exited with status=%d",
 				status);