[dovecot-cvs] dovecot/src/auth passdb-checkpassword.c,1.13,1.14

cras at dovecot.org cras at dovecot.org
Wed Jan 25 19:24:44 EET 2006


Update of /var/lib/cvs/dovecot/src/auth
In directory talvi:/tmp/cvs-serv29028

Modified Files:
	passdb-checkpassword.c 
Log Message:
Don't crash if unknown child exits.



Index: passdb-checkpassword.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/auth/passdb-checkpassword.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- passdb-checkpassword.c	14 Jan 2006 18:47:20 -0000	1.13
+++ passdb-checkpassword.c	25 Jan 2006 17:24:42 -0000	1.14
@@ -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);



More information about the dovecot-cvs mailing list