summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIdan Freiberg <speidy@gmail.com>2016-12-19 01:58:53 -0500
committerGitHub <noreply@github.com>2016-12-19 01:58:53 -0500
commit449407ebf158de774ba5a6a9d444a2550b7853e1 (patch)
tree7f0c8e4d4dba34e2976d5608c75805998a1d08e1
parent571035d433e4d0a6b2d2d81f196ff9384bc469ad (diff)
parentb1db87ea216274aa479cfece5ab8c1bc2f9ed690 (diff)
downloadxrdp-proprietary-449407ebf158de774ba5a6a9d444a2550b7853e1.tar.gz
xrdp-proprietary-449407ebf158de774ba5a6a9d444a2550b7853e1.zip
Merge pull request #558 from proski/vncpasswd
Use per-display VNC password files, remove old style password if found
-rw-r--r--sesman/env.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/sesman/env.c b/sesman/env.c
index 1a4fa679..d8eb3106 100644
--- a/sesman/env.c
+++ b/sesman/env.c
@@ -150,7 +150,7 @@ env_set_user(const char *username, char **passwd_file, int display,
if (0 == g_cfg->auth_file_path)
{
/* if no auth_file_path is set, then we go for
- $HOME/.vnc/sesman_username_passwd */
+ $HOME/.vnc/sesman_username_passwd:DISPLAY */
if (!g_directory_exist(".vnc"))
{
if (g_mkdir(".vnc") < 0)
@@ -161,12 +161,24 @@ env_set_user(const char *username, char **passwd_file, int display,
}
}
- len = g_snprintf(NULL, 0, "%s/.vnc/sesman_%s_passwd", pw_dir, username);
+ len = g_snprintf(NULL, 0, "%s/.vnc/sesman_%s_passwd:%d",
+ pw_dir, username, display);
*passwd_file = (char *) g_malloc(len + 1, 1);
if (*passwd_file != NULL)
{
- g_sprintf(*passwd_file, "%s/.vnc/sesman_%s_passwd", pw_dir, username);
+ /* Try legacy name first, remove if found */
+ g_sprintf(*passwd_file, "%s/.vnc/sesman_%s_passwd",
+ pw_dir, username);
+ if (g_file_exist(*passwd_file))
+ {
+ log_message(LOG_LEVEL_WARNING, "Removing insecure "
+ "password file %s", *passwd_file);
+ g_file_delete(*passwd_file);
+ }
+
+ g_sprintf(*passwd_file, "%s/.vnc/sesman_%s_passwd:%d",
+ pw_dir, username, display);
}
}
else