diff options
author | Andreas Schneider <asn@samba.org> | 2016-08-25 14:24:08 +0200 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2016-09-13 12:27:29 +0200 |
commit | 438a79ede0f658313a51bee5df507d996c079636 (patch) | |
tree | f92545998912b5e0dfa4c83becdebd82c62927c5 | |
parent | 88c1b5caeb547a1a3ebe94614fa827dc473cb64c (diff) | |
download | samba-438a79ede0f658313a51bee5df507d996c079636.tar.gz |
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 <asn@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
(cherry picked from commit f5401ff3146aabc5fb2dac25e4856c6c3756c8f7)
-rw-r--r-- | source3/utils/smbget.c | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/source3/utils/smbget.c b/source3/utils/smbget.c index 4909fa2ca07..74ca7f8939d 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); |