From: Timo Sirainen Date: Wed, 15 Mar 2017 22:42:28 +0000 (+0200) Subject: auth: oauth2 - remove db_oauth2_request.failed X-Git-Tag: 2.3.0.rc1~1949 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b928b757e77cf5d791fdf54b87e308b39e87071c;p=thirdparty%2Fdovecot%2Fcore.git auth: oauth2 - remove db_oauth2_request.failed It is an unnecessary duplication of passdb_result. --- diff --git a/src/auth/db-oauth2.c b/src/auth/db-oauth2.c index de4931c7ba..24dd2ccc6c 100644 --- a/src/auth/db-oauth2.c +++ b/src/auth/db-oauth2.c @@ -385,7 +385,6 @@ db_oauth2_template_export(struct db_oauth2_request *req, if (var_expand_with_funcs(dest, args[i+1], table, funcs_table, req, error_r) < 0) { *result_r = PASSDB_RESULT_INTERNAL_FAILURE; - req->failed = TRUE; return FALSE; } value = str_c(dest); @@ -411,17 +410,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); } } @@ -441,7 +440,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; } @@ -458,15 +456,15 @@ db_oauth2_validate_username(struct db_oauth2_request *req, *error_r = t_strdup_printf("var_expand(%s) failed: %s", req->db->set.username_format, error); *result_r = PASSDB_RESULT_INTERNAL_FAILURE; - req->failed = TRUE; + return FALSE; } else if (!str_equals(username_req, username_val)) { *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 @@ -480,10 +478,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 @@ -501,10 +499,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) @@ -514,14 +512,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 @@ -532,8 +529,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); @@ -571,8 +567,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);