]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: auth-cache - Always use translated_username as cache key
authorAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 2 Mar 2022 13:40:16 +0000 (15:40 +0200)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Thu, 3 Mar 2022 12:15:33 +0000 (14:15 +0200)
This fixes auth cache when passdb/userdb changes the user field.

src/auth/auth-cache.c

index 9d9e292af10e74e2cbb46e6b0bb7b995092704d6..e8aa10573c325d34f75608ace3d8c7c388f66a02 100644 (file)
@@ -384,7 +384,7 @@ auth_cache_lookup(struct auth_cache *cache, const struct auth_request *request,
        *expired_r = FALSE;
        *neg_expired_r = FALSE;
 
-       key = auth_request_expand_cache_key(request, key, request->fields.user);
+       key = auth_request_expand_cache_key(request, key, request->fields.translated_username);
        node = hash_table_lookup(cache->hash, key);
        if (node == NULL) {
                cache->miss_count++;
@@ -421,7 +421,6 @@ void auth_cache_insert(struct auth_cache *cache, struct auth_request *request,
 {
         struct auth_cache_node *node;
        size_t data_size, alloc_size, key_len, value_len = strlen(value);
-       const char *cache_username;
        char *hash_key;
 
        if (*value == '\0' && cache->neg_ttl_secs == 0) {
@@ -429,15 +428,7 @@ void auth_cache_insert(struct auth_cache *cache, struct auth_request *request,
                return;
        }
 
-       /* store into cache using the translated username, except if we're doing
-          a master user login */
-       cache_username = request->fields.user;
-       if (request->fields.translated_username != NULL &&
-           request->fields.requested_login_user == NULL &&
-           request->fields.master_user == NULL)
-               cache_username = request->fields.translated_username;
-
-       key = auth_request_expand_cache_key(request, key, cache_username);
+       key = auth_request_expand_cache_key(request, key, request->fields.translated_username);
        key_len = strlen(key);
 
        data_size = key_len + 1 + value_len + 1;