From 9f14da3eb24456e72c44fdad45f3b32c97fe7f43 Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Tue, 3 Sep 2019 16:07:58 +0200 Subject: [PATCH] Revert "Always prompt for password if not provided via commandline." This reverts commit 1aaafc80c037f57c3742ccb25b279467fcbf58b5. This change has caused a lot of issues, so we need to pause this for now and figure out a way to make the transition smoother. --- rdesktop.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/rdesktop.c b/rdesktop.c index 4148140..c597c32 100644 --- a/rdesktop.c +++ b/rdesktop.c @@ -160,8 +160,6 @@ extern RDPDR_DEVICE g_rdpdr_device[]; extern uint32 g_num_devices; extern char *g_rdpdr_clientname; -RD_BOOL password_provided = False; - /* Display usage information */ static void usage(char *program) @@ -778,7 +776,7 @@ main(int argc, char *argv[]) char domain[256]; char shell[256]; char directory[256]; - RD_BOOL deactivated; + RD_BOOL prompt_password, deactivated; struct passwd *pw; uint32 flags, ext_disc_reason = 0; char *p; @@ -815,6 +813,7 @@ main(int argc, char *argv[]) flags = RDP_INFO_MOUSE | RDP_INFO_DISABLECTRLALTDEL | RDP_INFO_UNICODE | RDP_INFO_MAXIMIZESHELL | RDP_INFO_ENABLEWINDOWSKEY; + prompt_password = False; g_seamless_spawn_cmd[0] = g_tls_version[0] = domain[0] = g_password[0] = shell[0] = directory[0] = 0; g_embed_wnd = 0; @@ -858,17 +857,19 @@ main(int argc, char *argv[]) break; case 'p': - if (!((optarg[0] == '-') && (optarg[1] == 0))) + if ((optarg[0] == '-') && (optarg[1] == 0)) { - password_provided = True; - STRNCPY(g_password, optarg, sizeof(g_password)); - flags |= RDP_INFO_AUTOLOGON; - - /* try to overwrite argument so it won't appear in `ps` */ - p = optarg; - while (*p) - *(p++) = 'X'; + prompt_password = True; + break; } + + STRNCPY(g_password, optarg, sizeof(g_password)); + flags |= RDP_INFO_AUTOLOGON; + + /* try to overwrite argument so it won't appear in ps */ + p = optarg; + while (*p) + *(p++) = 'X'; break; #ifdef WITH_SCARD case 'i': @@ -1285,8 +1286,7 @@ main(int argc, char *argv[]) if (locale) xfree(locale); - /* If no password provided at this point, prompt for password / pin */ - if (!g_password[0] && password_provided == False) + if (prompt_password) { if (read_password(g_password, sizeof(g_password))) {