Mercurial > dovecot > core-2.2
changeset 2289:83df1d1bbb05 HEAD
Fixes, patch by Andrey Panin
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 06 Jul 2004 09:35:30 +0300 |
parents | 5633733e6ec1 |
children | f0379a850f2a |
files | src/auth/mech-apop.c src/pop3-login/client.c |
diffstat | 2 files changed, 15 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/auth/mech-apop.c Tue Jul 06 09:06:00 2004 +0300 +++ b/src/auth/mech-apop.c Tue Jul 06 09:35:30 2004 +0300 @@ -10,7 +10,6 @@ */ #include "common.h" -#include "safe-memset.h" #include "mech.h" #include "passdb.h" #include "md5.h" @@ -40,14 +39,18 @@ (struct apop_auth_request *)auth_request; unsigned char digest[16]; struct md5_context ctx; + int ret = FALSE; - md5_init(&ctx); - md5_update(&ctx, auth->challenge, strlen(auth->challenge)); - md5_update(&ctx, credentials, strlen(credentials)); - md5_final(&ctx, digest); + if (credentials != NULL) { + md5_init(&ctx); + md5_update(&ctx, auth->challenge, strlen(auth->challenge)); + md5_update(&ctx, credentials, strlen(credentials)); + md5_final(&ctx, digest); - mech_auth_finish(auth_request, NULL, 0, - memcmp(digest, auth->digest, 16) == 0); + ret = memcmp(digest, auth->digest, 16) == 0; + } + + mech_auth_finish(auth_request, NULL, 0, ret); } static int
--- a/src/pop3-login/client.c Tue Jul 06 09:06:00 2004 +0300 +++ b/src/pop3-login/client.c Tue Jul 06 09:35:30 2004 +0300 @@ -225,14 +225,14 @@ } } -static char *get_apop_challenge(void) +static char *get_apop_challenge(struct pop3_client *client) { - struct auth_connect_id id; + struct auth_connect_id *id = &client->auth_id; - if (!auth_client_reserve_connection(auth_client, "APOP", &id)) + if (!auth_client_reserve_connection(auth_client, "APOP", id)) return NULL; - return i_strdup_printf("<%x.%x.%s@%s>", id.server_pid, id.connect_uid, + return i_strdup_printf("<%x.%x.%s@%s>", id->server_pid, id->connect_uid, dec2str(ioloop_time), my_hostname); } @@ -241,7 +241,7 @@ client->common.io = io_add(client->common.fd, IO_READ, client_input, client); - client->apop_challenge = get_apop_challenge(); + client->apop_challenge = get_apop_challenge(client); client_send_line(client, t_strconcat("+OK " PACKAGE " ready.", client->apop_challenge, NULL)); }