Mercurial > dovecot > original-hg > dovecot-1.2
changeset 2764:3cc4ebb5f42d HEAD
Didn't work with asynchronous passdb.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 18 Oct 2004 02:36:08 +0300 |
parents | ab14dffd0e91 |
children | 428bba43a387 |
files | src/auth/mech-rpa.c |
diffstat | 1 files changed, 17 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/src/auth/mech-rpa.c Mon Oct 18 02:08:40 2004 +0300 +++ b/src/auth/mech-rpa.c Mon Oct 18 02:36:08 2004 +0300 @@ -405,14 +405,30 @@ { struct rpa_auth_request *request = (struct rpa_auth_request *)auth_request; + unsigned char response[16]; buffer_t *hash_buffer; + const unsigned char *token4; + size_t token4_size; - if (credentials == NULL) + if (credentials == NULL) { + mech_auth_finish(auth_request, NULL, 0, FALSE); return; + } request->pwd_md5 = p_malloc(request->pool, 16); hash_buffer = buffer_create_data(request->pool, request->pwd_md5, 16); hex_to_binary(credentials, hash_buffer); + + rpa_user_response(request, response); + if (memcmp(response, request->user_response, 16) != 0) { + mech_auth_finish(auth_request, NULL, 0, FALSE); + return; + } + + token4 = mech_rpa_build_token4(request, &token4_size); + auth_request->callback(auth_request, AUTH_CLIENT_RESULT_CONTINUE, + token4, token4_size); + request->phase = 2; } static void @@ -455,10 +471,7 @@ { struct rpa_auth_request *request = (struct rpa_auth_request *)auth_request; - unsigned char response[16]; - const unsigned char *token4; const char *error; - size_t token4_size; if (!rpa_parse_token3(request, data, data_size, &error)) { if (verbose) { @@ -480,21 +493,6 @@ passdb->lookup_credentials(auth_request, PASSDB_CREDENTIALS_RPA, rpa_credentials_callback); - if (request->pwd_md5 == NULL) { - mech_auth_finish(auth_request, NULL, 0, FALSE); - return; - } - - rpa_user_response(request, response); - if (memcmp(response, request->user_response, 16) != 0) { - mech_auth_finish(auth_request, NULL, 0, FALSE); - return; - } - - token4 = mech_rpa_build_token4(request, &token4_size); - auth_request->callback(auth_request, AUTH_CLIENT_RESULT_CONTINUE, - token4, token4_size); - request->phase = 2; } static void