dovecot-1.1: Don't crash if trying to use an unsupported auth me...
dovecot at dovecot.org
dovecot at dovecot.org
Sat Dec 13 13:18:00 EET 2008
details: http://hg.dovecot.org/dovecot-1.1/rev/c7795a8b9a2d
changeset: 8039:c7795a8b9a2d
user: Timo Sirainen <tss at iki.fi>
date: Sat Dec 13 13:17:56 2008 +0200
description:
Don't crash if trying to use an unsupported auth mechanism.
diffstat:
4 files changed, 9 insertions(+)
src/imap-login/client-authenticate.c | 5 +++++
src/imap-login/client.h | 1 +
src/pop3-login/client-authenticate.c | 2 ++
src/pop3-login/client.h | 1 +
diffs (60 lines):
diff -r 0d7ce747d808 -r c7795a8b9a2d src/imap-login/client-authenticate.c
--- a/src/imap-login/client-authenticate.c Sat Dec 13 12:41:46 2008 +0200
+++ b/src/imap-login/client-authenticate.c Sat Dec 13 13:17:56 2008 +0200
@@ -77,6 +77,9 @@ static void client_auth_input(struct ima
static void client_auth_failed(struct imap_client *client)
{
+ if (client->auth_initializing)
+ return;
+
/* get back to normal client input. */
if (client->io != NULL)
io_remove(&client->io);
@@ -273,8 +276,10 @@ static int client_auth_begin(struct imap
const char *init_resp)
{
client_ref(client);
+ client->auth_initializing = TRUE;
sasl_server_auth_begin(&client->common, IMAP_SERVICE_NAME, mech_name,
init_resp, sasl_callback);
+ client->auth_initializing = FALSE;
if (!client->common.authenticating)
return 1;
diff -r 0d7ce747d808 -r c7795a8b9a2d src/imap-login/client.h
--- a/src/imap-login/client.h Sat Dec 13 12:41:46 2008 +0200
+++ b/src/imap-login/client.h Sat Dec 13 13:17:56 2008 +0200
@@ -31,6 +31,7 @@ struct imap_client {
unsigned int input_blocked:1;
unsigned int destroyed:1;
unsigned int greeting_sent:1;
+ unsigned int auth_initializing:1;
};
void client_destroy(struct imap_client *client, const char *reason);
diff -r 0d7ce747d808 -r c7795a8b9a2d src/pop3-login/client-authenticate.c
--- a/src/pop3-login/client-authenticate.c Sat Dec 13 12:41:46 2008 +0200
+++ b/src/pop3-login/client-authenticate.c Sat Dec 13 13:17:56 2008 +0200
@@ -330,8 +330,10 @@ bool cmd_pass(struct pop3_client *client
base64_encode(plain_login->data, plain_login->used, base64);
client_ref(client);
+ client->auth_initializing = TRUE;
sasl_server_auth_begin(&client->common, POP3_SERVICE_NAME, "PLAIN",
str_c(base64), sasl_callback);
+ client->auth_initializing = FALSE;
if (!client->common.authenticating)
return TRUE;
diff -r 0d7ce747d808 -r c7795a8b9a2d src/pop3-login/client.h
--- a/src/pop3-login/client.h Sat Dec 13 12:41:46 2008 +0200
+++ b/src/pop3-login/client.h Sat Dec 13 13:17:56 2008 +0200
@@ -31,6 +31,7 @@ struct pop3_client {
unsigned int login_success:1;
unsigned int authenticating:1;
unsigned int auth_connected:1;
+ unsigned int auth_initializing:1;
unsigned int destroyed:1;
};
More information about the dovecot-cvs
mailing list