From 8fec0f145a06d900bbcfc8959749cc78ab6be8ed Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Thu, 25 Aug 2016 14:24:08 +0200 Subject: [PATCH] s3-util: Fix asking for username and password in smbget. If the user specified the username in the URI with with: smb://DOMAIN;user:secret@server/share the tool should not prompt for the username nor the password. BUG: https://bugzilla.samba.org/show_bug.cgi?id=12175 Signed-off-by: Andreas Schneider Reviewed-by: Jeremy Allison (cherry picked from commit f5401ff3146aabc5fb2dac25e4856c6c3756c8f7) --- source3/utils/smbget.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/source3/utils/smbget.c b/source3/utils/smbget.c index 4909fa2..74ca7f8 100644 --- a/source3/utils/smbget.c +++ b/source3/utils/smbget.c @@ -105,7 +105,6 @@ static void get_auth_data(const char *srv, const char *shr, char *wg, int wglen, static char *savedwg; static char *savedun; static char *savedpw; - char tmp[128]; if (hasasked) { strncpy(wg, savedwg, wglen - 1); @@ -115,23 +114,22 @@ static void get_auth_data(const char *srv, const char *shr, char *wg, int wglen, } hasasked = true; - if (!opt.nonprompt && !opt.username_specified) { - printf("Username for %s at %s [guest] ", shr, srv); - if (fgets(tmp, sizeof(tmp), stdin) == NULL) { - return; - } - if ((strlen(tmp) > 0) && (tmp[strlen(tmp) - 1] == '\n')) { - tmp[strlen(tmp) - 1] = '\0'; - } - strncpy(un, tmp, unlen - 1); - } else if (opt.username != NULL) { + /* + * If no user has been specified un is initialized with the current + * username of the user who started smbget. + */ + if (opt.username_specified) { strncpy(un, opt.username, unlen - 1); } - if (!opt.nonprompt && !opt.password_specified) { + if (!opt.nonprompt && !opt.password_specified && pw[0] == '\0') { char *prompt; - if (asprintf(&prompt, "Password for %s at %s: ", shr, srv) == - -1) { + int rc; + + rc = asprintf(&prompt, + "Password for [%s] connecting to //%s/%s: ", + un, shr, srv); + if (rc == -1) { return; } (void)samba_getpass(prompt, pw, pwlen, false, false); -- 2.9.3