]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: auth_request_get_var_expand_table_full() - Add username parameter
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 3 Aug 2020 13:18:00 +0000 (16:18 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Thu, 27 Aug 2020 06:20:17 +0000 (06:20 +0000)
src/auth/auth-policy.c
src/auth/auth-request-var-expand.c
src/auth/auth-request-var-expand.h
src/auth/db-ldap.c
src/auth/db-oauth2.c

index 397fa18c507e62db05c609913761f0f616ae357a..bd4300ad8502cc5b6b96ed7bec0ab415f9932462 100644 (file)
@@ -468,8 +468,8 @@ const struct var_expand_table *policy_get_var_expand_table(struct auth_request *
        struct var_expand_table *table;
        unsigned int count = 2;
 
-       table = auth_request_get_var_expand_table_full(auth_request, auth_policy_escape_function,
-                                                      &count);
+       table = auth_request_get_var_expand_table_full(auth_request,
+               auth_request->fields.user, auth_policy_escape_function, &count);
        table[0].key = '\0';
        table[0].long_key = "hashed_password";
        table[0].value = hashed_password;
index 65eac7673333f677280a7704c83bf5813d818099..04d774e54e035200966a38d8db9886502751a35c 100644 (file)
@@ -82,6 +82,7 @@ auth_request_str_escape(const char *string,
 
 struct var_expand_table *
 auth_request_get_var_expand_table_full(const struct auth_request *auth_request,
+                                      const char *username,
                                       auth_request_escape_func_t *escape_func,
                                       unsigned int *count)
 {
@@ -89,7 +90,7 @@ auth_request_get_var_expand_table_full(const struct auth_request *auth_request,
        const unsigned int auth_count =
                N_ELEMENTS(auth_request_var_expand_static_tab);
        struct var_expand_table *tab, *ret_tab;
-       const char *orig_user, *auth_user, *username;
+       const char *orig_user, *auth_user;
 
        if (escape_func == NULL)
                escape_func = escape_none;
@@ -104,7 +105,8 @@ auth_request_get_var_expand_table_full(const struct auth_request *auth_request,
        memcpy(tab, auth_request_var_expand_static_tab,
               auth_count * sizeof(*tab));
 
-       username = fields->user != NULL ? fields->user : "";
+       if (username == NULL)
+               username = "";
        tab[0].value = escape_func(username, auth_request);
        tab[1].value = escape_func(t_strcut(username, '@'),
                                   auth_request);
@@ -209,8 +211,8 @@ auth_request_get_var_expand_table(const struct auth_request *auth_request,
 {
        unsigned int count = 0;
 
-       return auth_request_get_var_expand_table_full(auth_request, escape_func,
-                                                     &count);
+       return auth_request_get_var_expand_table_full(auth_request,
+               auth_request->fields.user, escape_func, &count);
 }
 
 static const char *field_get_default(const char *data)
index ddad1d4d356be201bb2bcd693f293b541c2be103..57e18a8addb5971ce7c2b0d6d243f9ad9dad715a 100644 (file)
@@ -20,8 +20,9 @@ auth_request_get_var_expand_table(const struct auth_request *auth_request,
        ATTR_NULL(2);
 struct var_expand_table *
 auth_request_get_var_expand_table_full(const struct auth_request *auth_request,
+                                      const char *username,
                                       auth_request_escape_func_t *escape_func,
-                                      unsigned int *count) ATTR_NULL(2);
+                                      unsigned int *count) ATTR_NULL(3);
 
 int auth_request_var_expand(string_t *dest, const char *str,
                            const struct auth_request *auth_request,
index 0a377ca014f534a0e5553315e1f46fa73e7d08bd..60a3af48973219c6a2d2738bb78380fd98de2001 100644 (file)
@@ -1473,8 +1473,8 @@ db_ldap_value_get_var_expand_table(struct auth_request *auth_request,
        struct var_expand_table *table;
        unsigned int count = 1;
 
-       table = auth_request_get_var_expand_table_full(auth_request, NULL,
-                                                      &count);
+       table = auth_request_get_var_expand_table_full(auth_request,
+                       auth_request->fields.user, NULL, &count);
        table[0].key = '$';
        table[0].value = ldap_value;
        return table;
index f681eb73cd8ae989223f747ab591f0b252016d35..2e2f73aa5814b7cf497b54e246364f421bb3b03c 100644 (file)
@@ -409,8 +409,8 @@ db_oauth2_value_get_var_expand_table(struct auth_request *auth_request,
        struct var_expand_table *table;
        unsigned int count = 1;
 
-       table = auth_request_get_var_expand_table_full(auth_request, NULL,
-                                                      &count);
+       table = auth_request_get_var_expand_table_full(auth_request,
+                       auth_request->fields.user, NULL, &count);
        table[0].key = '$';
        table[0].value = oauth2_value;
        return table;