# HG changeset patch # User Timo Sirainen # Date 1138209882 -7200 # Node ID f55438f449baa32edbb8e613be9f61ad689422df # Parent 5f86377d36832afeb65805db263e6643da206619 Don't crash if unknown child exits. diff -r 5f86377d3683 -r f55438f449ba src/auth/passdb-checkpassword.c --- 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);