Mercurial > dovecot > core-2.2
changeset 10892:9675d9a54ac9 HEAD
auth: Moved some variables generated from settings to struct auth_settings.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sat, 13 Mar 2010 16:52:50 +0200 |
parents | f2b9387ba047 |
children | 1a4c2e4bff75 |
files | src/auth/auth-request.c src/auth/auth-settings.c src/auth/auth-settings.h src/auth/auth.c src/auth/auth.h src/auth/mech-digest-md5.c src/auth/mech-rpa.c |
diffstat | 7 files changed, 36 insertions(+), 34 deletions(-) [+] |
line wrap: on
line diff
--- a/src/auth/auth-request.c Sat Mar 13 15:25:44 2010 +0200 +++ b/src/auth/auth-request.c Sat Mar 13 16:52:50 2010 +0200 @@ -782,21 +782,22 @@ auth_request_fix_username(struct auth_request *request, const char *username, const char **error_r) { + const struct auth_settings *set = request->auth->set; unsigned char *p; - char *user; + char *user; - if (*request->auth->set->default_realm != '\0' && + if (*set->default_realm != '\0' && strchr(username, '@') == NULL) { user = p_strconcat(request->pool, username, "@", - request->auth->set->default_realm, NULL); + set->default_realm, NULL); } else { user = p_strdup(request->pool, username); } for (p = (unsigned char *)user; *p != '\0'; p++) { - if (request->auth->username_translation[*p & 0xff] != 0) - *p = request->auth->username_translation[*p & 0xff]; - if (request->auth->username_chars[*p & 0xff] == 0) { + if (set->username_translation_map[*p & 0xff] != 0) + *p = set->username_translation_map[*p & 0xff]; + if (set->username_chars_map[*p & 0xff] == 0) { *error_r = t_strdup_printf( "Username contains disallowed character: " "0x%02x", *p); @@ -804,7 +805,7 @@ } } - if (*request->auth->set->username_format != '\0') { + if (*set->username_format != '\0') { /* username format given, put it through variable expansion. we'll have to temporarily replace request->user to get %u to be the wanted username */ @@ -817,7 +818,7 @@ dest = t_str_new(256); table = auth_request_get_var_expand_table(request, NULL); - var_expand(dest, request->auth->set->username_format, table); + var_expand(dest, set->username_format, table); user = p_strdup(request->pool, str_c(dest)); request->user = old_username;
--- a/src/auth/auth-settings.c Sat Mar 13 15:25:44 2010 +0200 +++ b/src/auth/auth-settings.c Sat Mar 13 16:52:50 2010 +0200 @@ -231,15 +231,33 @@ }; /* <settings checks> */ -static bool auth_settings_check(void *_set, pool_t pool ATTR_UNUSED, +static bool auth_settings_check(void *_set, pool_t pool, const char **error_r ATTR_UNUSED) { struct auth_settings *set = _set; + const char *p; if (set->debug_passwords) set->debug = TRUE; if (set->debug) set->verbose = TRUE; + + if (*set->username_chars == '\0') { + /* all chars are allowed */ + memset(set->username_chars_map, 1, + sizeof(set->username_chars_map)); + } else { + for (p = set->username_chars_map; *p != '\0'; p++) + set->username_chars_map[(int)(uint8_t)*p] = 1; + } + + if (*set->username_translation != '\0') { + p = set->username_translation; + for (; *p != '\0' && p[1] != '\0'; p += 2) + set->username_translation_map[(int)(uint8_t)*p] = p[1]; + } + set->realms_arr = + (const char *const *)p_strsplit_spaces(pool, set->realms, " "); return TRUE; }
--- a/src/auth/auth-settings.h Sat Mar 13 15:25:44 2010 +0200 +++ b/src/auth/auth-settings.h Sat Mar 13 16:52:50 2010 +0200 @@ -43,6 +43,11 @@ ARRAY_DEFINE(passdbs, struct auth_passdb_settings *); ARRAY_DEFINE(userdbs, struct auth_userdb_settings *); + + /* generated: */ + char username_chars_map[256]; + char username_translation_map[256]; + const char *const *realms_arr; }; struct auth_settings *auth_settings_read(struct master_service *service);
--- a/src/auth/auth.c Sat Mar 13 15:25:44 2010 +0200 +++ b/src/auth/auth.c Sat Mar 13 16:52:50 2010 +0200 @@ -206,7 +206,6 @@ struct auth_userdb *userdb; const struct mech_module *mech; const char *const *mechanisms; - const char *p; for (passdb = auth->masterdbs; passdb != NULL; passdb = passdb->next) passdb_init(passdb); @@ -242,23 +241,6 @@ if (auth->mech_modules == NULL) i_fatal("No authentication mechanisms configured"); auth_mech_list_verify_passdb(auth); - - auth->auth_realms = (const char *const *) - p_strsplit_spaces(auth->pool, auth->set->realms, " "); - - if (*auth->set->username_chars == '\0') { - /* all chars are allowed */ - memset(auth->username_chars, 1, sizeof(auth->username_chars)); - } else { - for (p = auth->set->username_chars; *p != '\0'; p++) - auth->username_chars[(int)(uint8_t)*p] = 1; - } - - if (*auth->set->username_translation != '\0') { - p = auth->set->username_translation; - for (; *p != '\0' && p[1] != '\0'; p += 2) - auth->username_translation[(int)(uint8_t)*p] = p[1]; - } } void auth_deinit(struct auth **_auth)
--- a/src/auth/auth.h Sat Mar 13 15:25:44 2010 +0200 +++ b/src/auth/auth.h Sat Mar 13 16:52:50 2010 +0200 @@ -40,10 +40,6 @@ struct auth_passdb *passdbs; struct auth_userdb *userdbs; struct auth_penalty *penalty; - - const char *const *auth_realms; - char username_chars[256]; - char username_translation[256]; }; const string_t *auth_mechanisms_get_list(struct auth *auth);
--- a/src/auth/mech-digest-md5.c Sat Mar 13 15:25:44 2010 +0200 +++ b/src/auth/mech-digest-md5.c Sat Mar 13 16:52:50 2010 +0200 @@ -84,12 +84,12 @@ request->nonce = p_strdup(request->pool, buf.data); str = t_str_new(256); - if (*auth->auth_realms == NULL) { + if (*auth->set->realms_arr == NULL) { /* If no realms are given, at least Cyrus SASL client defaults to destination host name */ str_append(str, "realm=\"\","); } else { - for (tmp = auth->auth_realms; *tmp != NULL; tmp++) + for (tmp = auth->set->realms_arr; *tmp != NULL; tmp++) str_printfa(str, "realm=\"%s\",", *tmp); }
--- a/src/auth/mech-rpa.c Sat Mar 13 15:25:44 2010 +0200 +++ b/src/auth/mech-rpa.c Sat Mar 13 16:52:50 2010 +0200 @@ -337,7 +337,7 @@ const char *const *tmp; realms = t_str_new(64); - for (tmp = auth->auth_realms; *tmp != NULL; tmp++) { + for (tmp = auth->set->realms_arr; *tmp != NULL; tmp++) { rpa_add_realm(realms, *tmp, request->auth_request.service); }