if (!auth_request_import_info(auth_request, name, arg) &&
strcmp(name, "user") == 0) {
/* username mask */
- auth_request->fields.user =
- p_strdup(auth_request->pool, arg);
+ auth_request_set_username_forced(auth_request, arg);
}
}
/* rest of the code doesn't like NULL user or service */
if (auth_request->fields.user == NULL)
- auth_request->fields.user = "";
+ auth_request_set_username_forced(auth_request, "");
if (auth_request->fields.service == NULL)
auth_request->fields.service = "";
if (request->set->ssl_username_from_cert && *value != '\0') {
/* get username from SSL certificate. it overrides
the username given by the auth mechanism. */
- fields->user = p_strdup(request->pool, value);
+ auth_request_set_username_forced(request, value);
fields->cert_username = TRUE;
}
} else {
/* for communication between auth master and worker processes */
if (strcmp(key, "user") == 0)
- fields->user = p_strdup(request->pool, value);
+ auth_request_set_username_forced(request, value);
else if (strcmp(key, "master-user") == 0)
fields->master_user = p_strdup(request->pool, value);
else if (strcmp(key, "original-username") == 0)
request->fields.user = NULL;
return FALSE;
}
- request->fields.user = p_strdup(request->pool, username);
+ auth_request_set_username_forced(request, username);
if (request->fields.translated_username == NULL) {
/* similar to original_username, but after translations */
request->fields.translated_username = request->fields.user;
return TRUE;
}
+void auth_request_set_username_forced(struct auth_request *request,
+ const char *username)
+{
+ i_assert(username != NULL);
+
+ request->fields.user = p_strdup(request->pool, username);
+}
+
bool auth_request_set_login_username(struct auth_request *request,
const char *username,
const char **error_r)
request->fields.requested_login_user);
request->fields.master_user = request->fields.user;
- request->fields.user = request->fields.requested_login_user;
+ auth_request_set_username_forced(request,
+ request->fields.requested_login_user);
request->fields.requested_login_user = NULL;
}
e_debug(authdb_event(request),
"username changed %s -> %s",
request->fields.user, new_value);
- request->fields.user = p_strdup(request->pool, new_value);
+ auth_request_set_username_forced(request, new_value);
request->user_changed_by_lookup = TRUE;
}
return TRUE;
bool auth_request_set_username(struct auth_request *request,
const char *username, const char **error_r);
+/* Change the username without any translations or checks. */
+void auth_request_set_username_forced(struct auth_request *request,
+ const char *username);
bool auth_request_set_login_username(struct auth_request *request,
const char *username,
const char **error_r);
if (request->set->verbose) {
/* temporarily set the user to the one that was given,
so that the log message goes right */
- request->fields.user =
- p_strndup(pool_datastack_create(), data, data_size);
+ auth_request_set_username_forced(request,
+ t_strndup(data, data_size));
e_info(request->mech_event, "login");
}
- request->fields.user = p_strdup(request->pool,
- request->set->anonymous_username);
+ auth_request_set_username_forced(request,
+ request->set->anonymous_username);
request->passdb_success = TRUE;
auth_request_success(request, "", 0);
username = t_strdup_until(username, args++);
if (username[0] != '\0' &&
strcmp(request->fields.user, username) != 0) {
- request->fields.user = p_strdup(request->pool, username);
+ auth_request_set_username_forced(request, username);
request->user_changed_by_lookup = TRUE;
}
} else {