]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: oauth2 - remove db_oauth2_request.failed
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Wed, 15 Mar 2017 22:42:28 +0000 (00:42 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Wed, 15 Mar 2017 23:28:43 +0000 (01:28 +0200)
It is an unnecessary duplication of passdb_result.

src/auth/db-oauth2.c
src/auth/db-oauth2.h
src/auth/passdb-oauth2.c

index de4931c7bac7c0d3936e82142243bd34dd14f4b8..24dd2ccc6cd46de5f8804a5de0afc5a12b6cd2fa 100644 (file)
@@ -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;
        }
 
index 4bde10cbbe213f0cbf68b7762174c12af87020a1..a44d51583cf16b1589919b14d225c9cda11f3c2f 100644 (file)
@@ -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
index 03785ffb500a0a85a041809233b489e9033a15cc..f7b6e906bef016f42c481395b6ba315dbecd1e3a 100644 (file)
@@ -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);