changeset 4430:94b3bb847f39 HEAD

If checkpassword lookup failed, we crashed. auth_debug logged checkpassword's exit_status wrong.
author Timo Sirainen <timo.sirainen@movial.fi>
date Tue, 20 Jun 2006 16:59:05 +0300
parents c58659bf7ca5
children 2461061327ed
files src/auth/passdb-checkpassword.c
diffstat 1 files changed, 5 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/auth/passdb-checkpassword.c	Tue Jun 20 16:13:47 2006 +0300
+++ b/src/auth/passdb-checkpassword.c	Tue Jun 20 16:59:05 2006 +0300
@@ -67,7 +67,8 @@
 
 	hash_remove(module->clients, POINTER_CAST(request->pid));
 
-	if (strchr(str_c(request->input_buf), '\n') != NULL) {
+	if (request->input_buf != NULL &&
+	    strchr(str_c(request->input_buf), '\n') != NULL) {
 		auth_request_log_error(request->request, "checkpassword",
 				       "LF characters in checkpassword reply");
 		result = PASSDB_RESULT_INTERNAL_FAILURE;
@@ -160,12 +161,13 @@
 			i_error("checkpassword: Child %s died with signal %d",
 				dec2str(pid), WTERMSIG(status));
 		} else if (WIFEXITED(status)) {
+			request->exited = TRUE;
+			request->exit_status = WEXITSTATUS(status);
+
 			auth_request_log_debug(request->request,
 				"checkpassword", "exit_status=%d",
 				request->exit_status);
 
-			request->exited = TRUE;
-			request->exit_status = WEXITSTATUS(status);
 			checkpassword_request_half_finish(request);
 			request = NULL;
 		} else {