]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: mech-cram-md5 - Make struct auth_request available in verify_credentials()
authorStephan Bosch <stephan.bosch@open-xchange.com>
Sat, 4 Oct 2025 21:06:26 +0000 (23:06 +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 bd0dc90fdd4051a184b57ab7305911429a3ff119..303a1f189262a9adf5f24fa3ea92499a84bcdf9c 100644 (file)
@@ -45,16 +45,18 @@ static const char *get_cram_challenge(void)
 }
 
 static bool
-verify_credentials(struct cram_auth_request *request,
+verify_credentials(struct auth_request *auth_request,
                   const unsigned char *credentials, size_t size)
 {
+       struct cram_auth_request *request =
+               container_of(auth_request, struct cram_auth_request,
+                            auth_request);
        unsigned char digest[MD5_RESULTLEN];
         struct hmac_context ctx;
        const char *response_hex;
 
        if (size != CRAM_MD5_CONTEXTLEN) {
-               e_error(request->auth_request.mech_event,
-                       "invalid credentials length");
+               e_error(auth_request->mech_event, "invalid credentials length");
                return FALSE;
        }
 
@@ -67,7 +69,7 @@ verify_credentials(struct cram_auth_request *request,
 
        if (!mem_equals_timing_safe(response_hex, request->response,
                                    sizeof(digest) * 2)) {
-               e_info(request->auth_request.mech_event,
+               e_info(auth_request->mech_event,
                       AUTH_LOG_MSG_PASSWORD_MISMATCH);
                return FALSE;
        }
@@ -113,13 +115,9 @@ credentials_callback(enum passdb_result result,
                     const unsigned char *credentials, size_t size,
                     struct auth_request *auth_request)
 {
-       struct cram_auth_request *request =
-               container_of(auth_request, struct cram_auth_request,
-                            auth_request);
-
        switch (result) {
        case PASSDB_RESULT_OK:
-               if (verify_credentials(request, credentials, size))
+               if (verify_credentials(auth_request, credentials, size))
                        auth_request_success(auth_request, "", 0);
                else
                        auth_request_fail(auth_request);