authentication: Replace display number with string

The display number is a concept which won't exist for Wayland displays.
We use a display nuimber instead.
This commit is contained in:
matt335672
2026-01-30 11:30:17 +00:00
parent 656a125cc0
commit d56408a891
8 changed files with 18 additions and 20 deletions
+2 -2
View File
@@ -64,14 +64,14 @@ auth_uds(const char *user, enum scp_login_status *errorcode);
*
* @brief Starts a session
* @param auth_info Auth handle created by auth_userpass
* @param display_num Display number
* @param display Display name
* @return 0 on success, 1 on failure
*
* The resources allocated when the session is started are de-allocated
* by auth_end() - there is no separate way to do this.
*/
int
auth_start_session(struct auth_info *auth_info, int display_num);
auth_start_session(struct auth_info *auth_info, const char *display);
/**
*
+1 -1
View File
@@ -175,7 +175,7 @@ auth_uds(const char *user, enum scp_login_status *errorcode)
/******************************************************************************/
/* returns error */
int
auth_start_session(struct auth_info *auth_info, int display_num)
auth_start_session(struct auth_info *auth_info, const char *display)
{
return 0;
}
+1 -1
View File
@@ -120,7 +120,7 @@ auth_uds(const char *user, enum scp_login_status *errorcode)
/******************************************************************************/
/* returns error */
int
auth_start_session(struct auth_info *auth_info, int display_num)
auth_start_session(struct auth_info *auth_info, const char *display)
{
return 0;
}
+1 -1
View File
@@ -224,7 +224,7 @@ auth_uds(const char *user, enum scp_login_status *errorcode)
/******************************************************************************/
/* returns error */
int
auth_start_session(struct auth_info *auth_info, int display_num)
auth_start_session(struct auth_info *auth_info, const char *display)
{
return 0;
}
+4 -6
View File
@@ -398,17 +398,15 @@ auth_uds(const char *user, enum scp_login_status *errorcode)
/* returns error */
static int
auth_start_session_private(struct auth_info *auth_info, int display_num)
auth_start_session_private(struct auth_info *auth_info, const char *display)
{
int error;
char display[256];
g_sprintf(display, ":%d", display_num);
error = pam_set_item(auth_info->ph, PAM_TTY, display);
if (error != PAM_SUCCESS)
{
LOG(LOG_LEVEL_ERROR, "pam_set_item failed: %s",
LOG(LOG_LEVEL_ERROR, "pam_set_item(PAM_TTY) failed: %s",
pam_strerror(auth_info->ph, error));
return 1;
}
@@ -444,9 +442,9 @@ auth_start_session_private(struct auth_info *auth_info, int display_num)
* routine fails
*/
int
auth_start_session(struct auth_info *auth_info, int display_num)
auth_start_session(struct auth_info *auth_info, const char *display)
{
int result = auth_start_session_private(auth_info, display_num);
int result = auth_start_session_private(auth_info, display);
if (result != 0)
{
LOG(LOG_LEVEL_ERROR,
+4 -6
View File
@@ -207,17 +207,15 @@ auth_uds(const char *user, enum scp_login_status *errorcode)
/* returns error */
static int
auth_start_session_private(struct auth_info *auth_info, int display_num)
auth_start_session_private(struct auth_info *auth_info, const char *display)
{
int error;
char display[256];
g_sprintf(display, ":%d", display_num);
error = pam_set_item(auth_info->ph, PAM_TTY, display);
if (error != PAM_SUCCESS)
{
LOG(LOG_LEVEL_ERROR, "pam_set_item failed: %s",
LOG(LOG_LEVEL_ERROR, "pam_set_item(PAM_TTY) failed: %s",
pam_strerror(auth_info->ph, error));
return 1;
}
@@ -253,9 +251,9 @@ auth_start_session_private(struct auth_info *auth_info, int display_num)
* routine fails
*/
int
auth_start_session(struct auth_info *auth_info, int display_num)
auth_start_session(struct auth_info *auth_info, const char *display)
{
int result = auth_start_session_private(auth_info, display_num);
int result = auth_start_session_private(auth_info, display);
if (result != 0)
{
LOG(LOG_LEVEL_ERROR,
+3 -1
View File
@@ -694,6 +694,7 @@ session_start_wrapped(struct login_info *login_info,
int display_pid;
int window_manager_pid;
enum scp_screate_status status = E_SCP_SCREATE_GENERAL_ERROR;
char displaystr[32];
/* Set the secondary groups before starting the session to prevent
* problems on PAM-based systems (see Linux pam_setcred(3)).
@@ -708,7 +709,8 @@ session_start_wrapped(struct login_info *login_info,
}
#endif
if (auth_start_session(login_info->auth_info, s->display) != 0)
snprintf(displaystr, sizeof(displaystr), "%d", s->display);
if (auth_start_session(login_info->auth_info, displaystr) != 0)
{
// Errors are logged by the auth module, as they are
// specific to that module
+2 -2
View File
@@ -304,9 +304,9 @@ main(int argc, char **argv)
rv = (int)errorcode;
if (auth_info && rv == 0 && amp.command != NULL)
{
int display = 10;
const char *display = "xrdp-test10";
rv = auth_start_session(auth_info, display);
LOG(LOG_LEVEL_INFO, "auth_start_session(,%d) returned %d",
LOG(LOG_LEVEL_INFO, "auth_start_session(,%s) returned %d",
display, rv);
if (rv == 0)
{