Mercurial > dovecot > original-hg > dovecot-1.2
changeset 5149:892b8f1c1916 HEAD
Make sure we crash if we're trying to call sasl_callback() too many times.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 16 Feb 2007 15:40:48 +0200 |
parents | 7f2c39d7a2cc |
children | 16240711734e |
files | src/login-common/sasl-server.c |
diffstat | 1 files changed, 6 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/login-common/sasl-server.c Fri Feb 16 15:12:05 2007 +0200 +++ b/src/login-common/sasl-server.c Fri Feb 16 15:40:48 2007 +0200 @@ -27,6 +27,7 @@ client->authenticating = FALSE; client->sasl_callback(client, success ? SASL_SERVER_REPLY_SUCCESS : SASL_SERVER_REPLY_MASTER_FAILED, NULL, NULL); + client->sasl_callback = NULL; } static void authenticate_callback(struct auth_request *request, int status, @@ -71,6 +72,7 @@ client->authenticating = FALSE; client->sasl_callback(client, SASL_SERVER_REPLY_SUCCESS, NULL, args); + client->sasl_callback = NULL; } else { master_request_login(client, master_callback, auth_client_request_get_server_pid(request), @@ -94,6 +96,7 @@ client->authenticating = FALSE; client->sasl_callback(client, SASL_SERVER_REPLY_AUTH_FAILED, NULL, args); + client->sasl_callback = NULL; break; } } @@ -148,6 +151,8 @@ static void sasl_server_auth_cancel(struct client *client, const char *reason, enum sasl_server_reply reply) { + i_assert(client->authenticating); + if (verbose_auth && reason != NULL) { const char *auth_name = str_sanitize(client->auth_mech_name, MAX_MECH_NAME); @@ -164,6 +169,7 @@ } client->sasl_callback(client, reply, reason, NULL); + client->sasl_callback = NULL; } void sasl_server_auth_failed(struct client *client, const char *reason)