]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: mech-cram-md5 - Handle authentication result in verify_credentials()
authorStephan Bosch <stephan.bosch@open-xchange.com>
Sat, 4 Oct 2025 20:48:26 +0000 (22:48 +0200)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Thu, 9 Oct 2025 08:41:22 +0000 (08:41 +0000)
src/auth/mech-cram-md5.c

index 303a1f189262a9adf5f24fa3ea92499a84bcdf9c..6f8b41986694d076292a49195b250486e1e26f47 100644 (file)
@@ -44,7 +44,7 @@ static const char *get_cram_challenge(void)
                               dec2str(ioloop_time), my_hostname);
 }
 
-static bool
+static void
 verify_credentials(struct auth_request *auth_request,
                   const unsigned char *credentials, size_t size)
 {
@@ -57,7 +57,8 @@ verify_credentials(struct auth_request *auth_request,
 
        if (size != CRAM_MD5_CONTEXTLEN) {
                e_error(auth_request->mech_event, "invalid credentials length");
-               return FALSE;
+               auth_request_fail(auth_request);
+               return;
        }
 
        hmac_init(&ctx, NULL, 0, &hash_method_md5);
@@ -71,10 +72,11 @@ verify_credentials(struct auth_request *auth_request,
                                    sizeof(digest) * 2)) {
                e_info(auth_request->mech_event,
                       AUTH_LOG_MSG_PASSWORD_MISMATCH);
-               return FALSE;
+               auth_request_fail(auth_request);
+               return;
        }
 
-       return TRUE;
+       auth_request_success(auth_request, "", 0);
 }
 
 static bool
@@ -117,10 +119,7 @@ credentials_callback(enum passdb_result result,
 {
        switch (result) {
        case PASSDB_RESULT_OK:
-               if (verify_credentials(auth_request, credentials, size))
-                       auth_request_success(auth_request, "", 0);
-               else
-                       auth_request_fail(auth_request);
+               verify_credentials(auth_request, credentials, size);
                break;
        case PASSDB_RESULT_INTERNAL_FAILURE:
                auth_request_internal_failure(auth_request);