Let the application log it directly.
static bool
mech_scram_set_username(struct auth_scram_server *asserver,
- const char *username, const char **error_r)
+ const char *username)
{
struct scram_auth_request *request =
container_of(asserver, struct scram_auth_request, scram_server);
struct auth_request *auth_request = &request->auth_request;
+ const char *error;
- return auth_request_set_username(auth_request, username, error_r);
+ if (!auth_request_set_username(auth_request, username, &error)) {
+ e_info(auth_request->mech_event, "%s", error);
+ return FALSE;
+ }
+ return TRUE;
}
static bool
mech_scram_set_login_username(struct auth_scram_server *asserver,
- const char *username, const char **error_r)
+ const char *username)
{
struct scram_auth_request *request =
container_of(asserver, struct scram_auth_request, scram_server);
struct auth_request *auth_request = &request->auth_request;
+ const char *error;
- return auth_request_set_login_username(auth_request, username, error_r);
+ if (!auth_request_set_login_username(auth_request, username, &error)) {
+ e_info(auth_request->mech_event, "login user: %s", error);
+ return FALSE;
+ }
+ return TRUE;
}
static void
&error_code, &error);
if (ret < 0) {
i_assert(error != NULL);
- if (error_code == AUTH_SCRAM_SERVER_ERROR_VERIFICATION_FAILED) {
+ switch (error_code) {
+ case AUTH_SCRAM_SERVER_ERROR_NONE:
+ i_unreached();
+ case AUTH_SCRAM_SERVER_ERROR_PROTOCOL_VIOLATION:
+ e_info(auth_request->mech_event, "%s", error);
+ break;
+ case AUTH_SCRAM_SERVER_ERROR_BAD_USERNAME:
+ case AUTH_SCRAM_SERVER_ERROR_BAD_LOGIN_USERNAME:
+ case AUTH_SCRAM_SERVER_ERROR_LOOKUP_FAILED:
+ break;
+ case AUTH_SCRAM_SERVER_ERROR_VERIFICATION_FAILED:
e_info(auth_request->mech_event,
AUTH_LOG_MSG_PASSWORD_MISMATCH);
- } else {
- e_info(auth_request->mech_event, "%s", error);
+ break;
}
sasl_server_request_failure(auth_request);
return;
static bool
auth_scram_server_set_username(struct auth_scram_server *server,
- const char *username, const char **error_r)
+ const char *username)
{
- return server->backend->set_username(server, username, error_r);
+ return server->backend->set_username(server, username);
}
static bool
auth_scram_server_set_login_username(struct auth_scram_server *server,
- const char *username, const char **error_r)
+ const char *username)
{
- return server->backend->set_login_username(server, username,
- error_r);
+ return server->backend->set_login_username(server, username);
}
static void
/* Pass usernames to backend */
i_assert(username != NULL);
- if (!auth_scram_server_set_username(server, username, error_r)) {
+ if (!auth_scram_server_set_username(server, username)) {
+ *error_r = "Bad username";
*error_code_r = AUTH_SCRAM_SERVER_ERROR_BAD_USERNAME;
return -1;
}
if (login_username != NULL &&
- !auth_scram_server_set_login_username(server, login_username,
- error_r)) {
+ !auth_scram_server_set_login_username(server, login_username)) {
+ *error_r = "Bad login username";
*error_code_r = AUTH_SCRAM_SERVER_ERROR_BAD_LOGIN_USERNAME;
return -1;
}
/* Pass the authentication and authorization usernames to the
backend. */
bool (*set_username)(struct auth_scram_server *server,
- const char *username, const char **error_r);
+ const char *username);
bool (*set_login_username)(struct auth_scram_server *server,
- const char *username, const char **error_r);
+ const char *username);
/* Start channel binding in backend with provided type. */
void (*start_channel_binding)(struct auth_scram_server *server,
};
static bool
-test_auth_set_username(struct auth_scram_server *asserver, const char *username,
- const char **error_r)
+test_auth_set_username(struct auth_scram_server *asserver, const char *username)
{
struct backend_context *bctx =
container_of(asserver, struct backend_context, asserver);
- if (bctx->expect_error == AUTH_SCRAM_SERVER_ERROR_BAD_USERNAME) {
- *error_r = "Bad username";
+ if (bctx->expect_error == AUTH_SCRAM_SERVER_ERROR_BAD_USERNAME)
return FALSE;
- }
bctx->username = p_strdup(bctx->pool, username);
- *error_r = NULL;
return TRUE;
}
static bool
test_auth_set_login_username(struct auth_scram_server *asserver,
- const char *username, const char **error_r)
+ const char *username)
{
struct backend_context *bctx =
container_of(asserver, struct backend_context, asserver);
- if (bctx->expect_error == AUTH_SCRAM_SERVER_ERROR_BAD_LOGIN_USERNAME) {
- *error_r = "Bad login username";
+ if (bctx->expect_error == AUTH_SCRAM_SERVER_ERROR_BAD_LOGIN_USERNAME)
return FALSE;
- }
bctx->login_username = p_strdup(bctx->pool, username);
- *error_r = NULL;
return TRUE;
}