From 91ae7a2a4060e70e285f1e6408efdd31edeb2e75 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Thu, 16 Mar 2017 00:42:28 +0200 Subject: [PATCH] auth: oauth2 - remove db_oauth2_request.failed It is an unnecessary duplication of passdb_result. --- src/auth/db-oauth2.c | 32 ++++++++++++++------------------ src/auth/db-oauth2.h | 5 +---- src/auth/passdb-oauth2.c | 7 +++---- 3 files changed, 18 insertions(+), 26 deletions(-) diff --git a/src/auth/db-oauth2.c b/src/auth/db-oauth2.c index 29aba2af73..d3091851ba 100644 --- a/src/auth/db-oauth2.c +++ b/src/auth/db-oauth2.c @@ -398,17 +398,17 @@ static void db_oauth2_fields_merge(struct db_oauth2_request *req, } static void db_oauth2_callback(struct db_oauth2_request *req, - enum passdb_result result, bool success, + enum passdb_result result, const char *error) { db_oauth2_lookup_callback_t *callback = req->callback; req->callback = NULL; - i_assert(result == PASSDB_RESULT_OK || (!success && error != NULL)); + i_assert(result == PASSDB_RESULT_OK || error != NULL); if (callback != NULL) { DLLIST_REMOVE(&req->db->head, req); - callback(req->db, result, success, req, error, req->context); + callback(req->db, result, req, error, req->context); } } @@ -427,7 +427,6 @@ db_oauth2_validate_username(struct db_oauth2_request *req, if (username_value == NULL) { *result_r = PASSDB_RESULT_INTERNAL_FAILURE; - req->failed = TRUE; *error_r = "No username returned"; return FALSE; } @@ -448,10 +447,10 @@ db_oauth2_validate_username(struct db_oauth2_request *req, *error_r = t_strdup_printf("Username '%s' did not match '%s'", str_c(username_req), str_c(username_val)); *result_r = PASSDB_RESULT_USER_UNKNOWN; - req->failed = TRUE; + return FALSE; + } else { + return TRUE; } - - return !req->failed; } static bool @@ -465,10 +464,10 @@ db_oauth2_user_is_enabled(struct db_oauth2_request *req, strcmp(req->db->set.active_value, active_value) != 0)) { *error_r = "User account is not active"; *result_r = PASSDB_RESULT_USER_DISABLED; - req->failed = TRUE; + return FALSE; } } - return !req->failed; + return TRUE; } static bool @@ -486,10 +485,10 @@ db_oauth2_token_in_scope(struct db_oauth2_request *req, *error_r = t_strdup_printf("Token is not valid for scope '%s'", req->db->set.scope); *result_r = PASSDB_RESULT_USER_DISABLED; - req->failed = TRUE; + return FALSE; } } - return !req->failed; + return TRUE; } static void db_oauth2_process_fields(struct db_oauth2_request *req) @@ -499,14 +498,13 @@ static void db_oauth2_process_fields(struct db_oauth2_request *req) if (db_oauth2_validate_username(req, &result, &error) && db_oauth2_user_is_enabled(req, &result, &error) && db_oauth2_token_in_scope(req, &result, &error) && - db_oauth2_template_export(req, &result, &error) && - !req->failed) { + db_oauth2_template_export(req, &result, &error)) { result = PASSDB_RESULT_OK; } else { i_assert(result != PASSDB_RESULT_OK && error != NULL); } - db_oauth2_callback(req, result, !req->failed, error); + db_oauth2_callback(req, result, error); } static void @@ -517,8 +515,7 @@ db_oauth2_introspect_continue(struct oauth2_introspection_result *result, if (!result->success) { /* fail here */ - req->failed = TRUE; - db_oauth2_callback(req, PASSDB_RESULT_INTERNAL_FAILURE, FALSE, result->error); + db_oauth2_callback(req, PASSDB_RESULT_INTERNAL_FAILURE, result->error); return; } db_oauth2_fields_merge(req, result->fields); @@ -556,8 +553,7 @@ db_oauth2_lookup_continue(struct oauth2_token_validation_result *result, enum passdb_result passdb_result = result->success ? PASSDB_RESULT_PASSWORD_MISMATCH : PASSDB_RESULT_INTERNAL_FAILURE; - req->failed = TRUE; - db_oauth2_callback(req, passdb_result, FALSE, result->error == NULL ? "Invalid token" : result->error); + db_oauth2_callback(req, passdb_result, result->error == NULL ? "Invalid token" : result->error); return; } diff --git a/src/auth/db-oauth2.h b/src/auth/db-oauth2.h index 4bde10cbbe..a44d51583c 100644 --- a/src/auth/db-oauth2.h +++ b/src/auth/db-oauth2.h @@ -7,7 +7,6 @@ struct db_oauth2_request; typedef void db_oauth2_lookup_callback_t(struct db_oauth2 *db, enum passdb_result result, - bool success, struct db_oauth2_request *request, const char *error, void *context); @@ -29,8 +28,6 @@ struct db_oauth2_request { db_oauth2_lookup_callback_t *callback; void *context; verify_plain_callback_t *verify_callback; - - bool failed:1; }; @@ -42,7 +39,7 @@ void db_oauth2_unref(struct db_oauth2 **); void db_oauth2_lookup(struct db_oauth2 *db, struct db_oauth2_request *req, const char *token, struct auth_request *request, db_oauth2_lookup_callback_t *callback, void *context); #define db_oauth2_lookup(db, req, token, request, callback, context) \ db_oauth2_lookup(db, req, token + \ - CALLBACK_TYPECHECK(callback, void(*)(struct db_oauth2*, enum passdb_result, bool, struct db_oauth2_request *req, const char*, typeof(context))), \ + CALLBACK_TYPECHECK(callback, void(*)(struct db_oauth2*, enum passdb_result, struct db_oauth2_request *req, const char*, typeof(context))), \ request, (db_oauth2_lookup_callback_t*)callback, (void*)context) #endif diff --git a/src/auth/passdb-oauth2.c b/src/auth/passdb-oauth2.c index 03785ffb50..f7b6e906be 100644 --- a/src/auth/passdb-oauth2.c +++ b/src/auth/passdb-oauth2.c @@ -11,15 +11,14 @@ struct oauth2_passdb_module { static void oauth2_verify_plain_continue(struct db_oauth2 *db ATTR_UNUSED, - enum passdb_result result, bool success, + enum passdb_result result, struct db_oauth2_request *req, const char *error, struct auth_request *request) { - i_assert(success || result != PASSDB_RESULT_OK); - if (!success && result == PASSDB_RESULT_INTERNAL_FAILURE) + if (result == PASSDB_RESULT_INTERNAL_FAILURE) auth_request_log_error(request, AUTH_SUBSYS_DB, "oauth2 failed: %s", error); - else if (!success) + else if (result != PASSDB_RESULT_OK) auth_request_log_info(request, AUTH_SUBSYS_DB, "oauth2 failed: %s", error); req->verify_callback(result, request); -- 2.47.3