]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
login-common: Use a reason string array for client_auth_fail_code
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 22 Dec 2022 12:12:34 +0000 (14:12 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Thu, 23 Mar 2023 08:06:31 +0000 (08:06 +0000)
src/login-common/client-common.c
src/login-common/client-common.h

index f5a316870feae9b26150f945391c867f9affd442..f04cb364a33444696cb972245e317e8e5e11c23e 100644 (file)
@@ -46,6 +46,20 @@ struct login_client_module_hooks {
 };
 
 static ARRAY(struct login_client_module_hooks) module_hooks = ARRAY_INIT;
+static const char *client_auth_fail_code_reasons[] = {
+       NULL,
+       "authorization failed",
+       "auth service reported temporary failure",
+       "user disabled",
+       "password expired",
+       "sent invalid base64 in response",
+       "login disabled",
+       "tried to use unsupported auth mechanism",
+       "tried to use disallowed cleartext auth",
+       "anonymous logins disabled",
+};
+static_assert_array_size(client_auth_fail_code_reasons,
+                        CLIENT_AUTH_FAIL_CODE_COUNT);
 
 static const char *client_get_log_str(struct client *client, const char *msg);
 
@@ -1175,28 +1189,14 @@ const char *client_get_extra_disconnect_reason(struct client *client)
        }
 
        switch (client->last_auth_fail) {
+       case CLIENT_AUTH_FAIL_CODE_NONE:
+               break;
        case CLIENT_AUTH_FAIL_CODE_AUTHZFAILED:
                return t_strdup_printf(
                        "authorization failed, %u attempts in %u secs",
                        client->auth_attempts, auth_secs);
-       case CLIENT_AUTH_FAIL_CODE_TEMPFAIL:
-               return "auth service reported temporary failure";
-       case CLIENT_AUTH_FAIL_CODE_USER_DISABLED:
-               return "user disabled";
-       case CLIENT_AUTH_FAIL_CODE_PASS_EXPIRED:
-               return "password expired";
-       case CLIENT_AUTH_FAIL_CODE_INVALID_BASE64:
-               return "sent invalid base64 in response";
-       case CLIENT_AUTH_FAIL_CODE_LOGIN_DISABLED:
-               return "login disabled";
-       case CLIENT_AUTH_FAIL_CODE_MECH_INVALID:
-               return "tried to use unsupported auth mechanism";
-       case CLIENT_AUTH_FAIL_CODE_MECH_SSL_REQUIRED:
-               return "tried to use disallowed cleartext auth";
-       case CLIENT_AUTH_FAIL_CODE_ANONYMOUS_DENIED:
-               return "anonymous logins disabled";
        default:
-               break;
+               return client_auth_fail_code_reasons[client->last_auth_fail];
        }
 
        return t_strdup_printf("auth failed, %u attempts in %u secs",
index 048e51f7d0629554b9ca0bae7bd2050dfe098362..ca929d814e79ee5b5a47e9bb141a4576a65dc24e 100644 (file)
@@ -64,6 +64,8 @@ enum client_auth_fail_code {
        CLIENT_AUTH_FAIL_CODE_MECH_INVALID,
        CLIENT_AUTH_FAIL_CODE_MECH_SSL_REQUIRED,
        CLIENT_AUTH_FAIL_CODE_ANONYMOUS_DENIED,
+
+       CLIENT_AUTH_FAIL_CODE_COUNT
 };
 
 enum client_auth_result {