diff options
author | Idan Freiberg <speidy@gmail.com> | 2016-12-19 01:58:53 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-19 01:58:53 -0500 |
commit | 449407ebf158de774ba5a6a9d444a2550b7853e1 (patch) | |
tree | 7f0c8e4d4dba34e2976d5608c75805998a1d08e1 | |
parent | 571035d433e4d0a6b2d2d81f196ff9384bc469ad (diff) | |
parent | b1db87ea216274aa479cfece5ab8c1bc2f9ed690 (diff) | |
download | xrdp-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.c | 18 |
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 |