]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: sasl-server - Add enum sasl_passdb_result_status and use it in the mechanisms
authorStephan Bosch <stephan.bosch@open-xchange.com>
Sat, 4 Mar 2023 22:44:37 +0000 (23:44 +0100)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Thu, 9 Oct 2025 08:41:22 +0000 (08:41 +0000)
src/auth/sasl-server-mech-cram-md5.c
src/auth/sasl-server-mech-digest-md5.c
src/auth/sasl-server-mech-gssapi.c
src/auth/sasl-server-mech-otp.c
src/auth/sasl-server-mech-plain-common.c
src/auth/sasl-server-mech-scram.c
src/auth/sasl-server.h

index a5f0558965f92ef8961503f8229296beec36f455..4059e690d3752b560d0cc12ce1e34d81a57bdbab 100644 (file)
@@ -115,10 +115,10 @@ credentials_callback(enum passdb_result result,
                     struct auth_request *auth_request)
 {
        switch (result) {
-       case PASSDB_RESULT_OK:
+       case SASL_PASSDB_RESULT_OK:
                verify_credentials(auth_request, credentials, size);
                break;
-       case PASSDB_RESULT_INTERNAL_FAILURE:
+       case SASL_PASSDB_RESULT_INTERNAL_FAILURE:
                sasl_server_request_internal_failure(auth_request);
                break;
        default:
index 710f6994ab756d715b17e40143f1cec74841a201..18230157b888d86aa93514c7fefa91dfab4a65ae 100644 (file)
@@ -534,10 +534,10 @@ credentials_callback(enum passdb_result result,
                     struct auth_request *auth_request)
 {
        switch (result) {
-       case PASSDB_RESULT_OK:
+       case SASL_PASSDB_RESULT_OK:
                verify_credentials(auth_request, credentials, size);
                break;
-       case PASSDB_RESULT_INTERNAL_FAILURE:
+       case SASL_PASSDB_RESULT_INTERNAL_FAILURE:
                sasl_server_request_internal_failure(auth_request);
                break;
        default:
index 20067559cb2adc490d1275f1cb09b6817718952e..d02b943638f6c1e30e8ce3f123c7505b953501d5 100644 (file)
@@ -507,19 +507,19 @@ gssapi_credentials_callback(enum passdb_result result,
           does not strictly require a passdb. But if a passdb is configured,
           now the k5principals field will have been filled in. */
        switch (result) {
-       case PASSDB_RESULT_INTERNAL_FAILURE:
+       case SASL_PASSDB_RESULT_INTERNAL_FAILURE:
                sasl_server_request_internal_failure(auth_request);
                return;
-       case PASSDB_RESULT_USER_DISABLED:
-       case PASSDB_RESULT_PASS_EXPIRED:
+       case SASL_PASSDB_RESULT_USER_DISABLED:
+       case SASL_PASSDB_RESULT_PASS_EXPIRED:
                /* User is explicitly disabled, don't allow it to log in */
                sasl_server_request_failure(auth_request);
                return;
-       case PASSDB_RESULT_NEXT:
-       case PASSDB_RESULT_SCHEME_NOT_AVAILABLE:
-       case PASSDB_RESULT_USER_UNKNOWN:
-       case PASSDB_RESULT_PASSWORD_MISMATCH:
-       case PASSDB_RESULT_OK:
+       case PASSDB_RESULT_NEXT: /* FIXME: To be removed */
+       case SASL_PASSDB_RESULT_SCHEME_NOT_AVAILABLE:
+       case SASL_PASSDB_RESULT_USER_UNKNOWN:
+       case SASL_PASSDB_RESULT_PASSWORD_MISMATCH:
+       case SASL_PASSDB_RESULT_OK:
                break;
        }
 
index 6206300ac8fd63bc23ee2ca6cb6943a7a75461b5..92214d408c9df6e6cb47288919aed016c9a19b83 100644 (file)
@@ -118,10 +118,10 @@ otp_credentials_callback(enum passdb_result result,
                             auth_request);
 
        switch (result) {
-       case PASSDB_RESULT_OK:
+       case SASL_PASSDB_RESULT_OK:
                otp_send_challenge(request, credentials, size);
                break;
-       case PASSDB_RESULT_INTERNAL_FAILURE:
+       case SASL_PASSDB_RESULT_INTERNAL_FAILURE:
                sasl_server_request_internal_failure(auth_request);
                break;
        default:
index e18981aaad94f0286875179c8353a4d29a393a76..d2bdb90f6ec33d65a8ebe0d9f20c152617cfea06 100644 (file)
@@ -9,10 +9,10 @@ void sasl_server_mech_plain_verify_callback(enum passdb_result result,
                                            struct auth_request *request)
 {
        switch (result) {
-       case PASSDB_RESULT_OK:
+       case SASL_PASSDB_RESULT_OK:
                sasl_server_request_success(request, "", 0);
                break;
-       case PASSDB_RESULT_INTERNAL_FAILURE:
+       case SASL_PASSDB_RESULT_INTERNAL_FAILURE:
                sasl_server_request_internal_failure(request);
                break;
        default:
index 4baf20643f4047ad7f9fbc2d530f3838df9fe2ef..3c71f4d839747b9f2e66474915af740a8f195335 100644 (file)
@@ -32,7 +32,7 @@ credentials_callback(enum passdb_result result,
        bool end;
 
        switch (result) {
-       case PASSDB_RESULT_OK:
+       case SASL_PASSDB_RESULT_OK:
                if (auth_scram_credentials_parse(key_data->hmethod,
                                                 request->password_scheme,
                                                 credentials, size,
@@ -51,7 +51,7 @@ credentials_callback(enum passdb_result result,
                i_assert(!end);
                sasl_server_request_output(auth_request, output, output_len);
                break;
-       case PASSDB_RESULT_INTERNAL_FAILURE:
+       case SASL_PASSDB_RESULT_INTERNAL_FAILURE:
                sasl_server_request_internal_failure(auth_request);
                break;
        default:
index e45266310fc5a5b6b7750dddc8be84c1468bafe4..3ace2c29a04b64dace0ee776437467af615a2a54 100644 (file)
@@ -5,6 +5,18 @@
 
 #include "sasl-common.h"
 
+enum sasl_passdb_result_status {
+       SASL_PASSDB_RESULT_INTERNAL_FAILURE = PASSDB_RESULT_INTERNAL_FAILURE,
+       SASL_PASSDB_RESULT_SCHEME_NOT_AVAILABLE = PASSDB_RESULT_SCHEME_NOT_AVAILABLE,
+
+       SASL_PASSDB_RESULT_USER_UNKNOWN = PASSDB_RESULT_USER_UNKNOWN,
+       SASL_PASSDB_RESULT_USER_DISABLED = PASSDB_RESULT_USER_DISABLED,
+       SASL_PASSDB_RESULT_PASS_EXPIRED = PASSDB_RESULT_PASS_EXPIRED,
+
+       SASL_PASSDB_RESULT_PASSWORD_MISMATCH = PASSDB_RESULT_PASSWORD_MISMATCH,
+       SASL_PASSDB_RESULT_OK = PASSDB_RESULT_OK,
+};
+
 enum mech_passdb_need {
        /* Mechanism doesn't need a passdb at all */
        MECH_PASSDB_NEED_NOTHING = 0,