1 |
unnilennium |
1.1 |
From 8fec0f145a06d900bbcfc8959749cc78ab6be8ed Mon Sep 17 00:00:00 2001 |
2 |
|
|
From: Andreas Schneider <asn@samba.org> |
3 |
|
|
Date: Thu, 25 Aug 2016 14:24:08 +0200 |
4 |
|
|
Subject: [PATCH] s3-util: Fix asking for username and password in smbget. |
5 |
|
|
|
6 |
|
|
If the user specified the username in the URI with with: |
7 |
|
|
|
8 |
|
|
smb://DOMAIN;user:secret@server/share |
9 |
|
|
|
10 |
|
|
the tool should not prompt for the username nor the password. |
11 |
|
|
|
12 |
|
|
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12175 |
13 |
|
|
|
14 |
|
|
Signed-off-by: Andreas Schneider <asn@samba.org> |
15 |
|
|
Reviewed-by: Jeremy Allison <jra@samba.org> |
16 |
|
|
|
17 |
|
|
(cherry picked from commit f5401ff3146aabc5fb2dac25e4856c6c3756c8f7) |
18 |
|
|
--- |
19 |
|
|
source3/utils/smbget.c | 26 ++++++++++++-------------- |
20 |
|
|
1 file changed, 12 insertions(+), 14 deletions(-) |
21 |
|
|
|
22 |
|
|
diff --git a/source3/utils/smbget.c b/source3/utils/smbget.c |
23 |
|
|
index 4909fa2..74ca7f8 100644 |
24 |
|
|
--- a/source3/utils/smbget.c |
25 |
|
|
+++ b/source3/utils/smbget.c |
26 |
|
|
@@ -105,7 +105,6 @@ static void get_auth_data(const char *srv, const char *shr, char *wg, int wglen, |
27 |
|
|
static char *savedwg; |
28 |
|
|
static char *savedun; |
29 |
|
|
static char *savedpw; |
30 |
|
|
- char tmp[128]; |
31 |
|
|
|
32 |
|
|
if (hasasked) { |
33 |
|
|
strncpy(wg, savedwg, wglen - 1); |
34 |
|
|
@@ -115,23 +114,22 @@ static void get_auth_data(const char *srv, const char *shr, char *wg, int wglen, |
35 |
|
|
} |
36 |
|
|
hasasked = true; |
37 |
|
|
|
38 |
|
|
- if (!opt.nonprompt && !opt.username_specified) { |
39 |
|
|
- printf("Username for %s at %s [guest] ", shr, srv); |
40 |
|
|
- if (fgets(tmp, sizeof(tmp), stdin) == NULL) { |
41 |
|
|
- return; |
42 |
|
|
- } |
43 |
|
|
- if ((strlen(tmp) > 0) && (tmp[strlen(tmp) - 1] == '\n')) { |
44 |
|
|
- tmp[strlen(tmp) - 1] = '\0'; |
45 |
|
|
- } |
46 |
|
|
- strncpy(un, tmp, unlen - 1); |
47 |
|
|
- } else if (opt.username != NULL) { |
48 |
|
|
+ /* |
49 |
|
|
+ * If no user has been specified un is initialized with the current |
50 |
|
|
+ * username of the user who started smbget. |
51 |
|
|
+ */ |
52 |
|
|
+ if (opt.username_specified) { |
53 |
|
|
strncpy(un, opt.username, unlen - 1); |
54 |
|
|
} |
55 |
|
|
|
56 |
|
|
- if (!opt.nonprompt && !opt.password_specified) { |
57 |
|
|
+ if (!opt.nonprompt && !opt.password_specified && pw[0] == '\0') { |
58 |
|
|
char *prompt; |
59 |
|
|
- if (asprintf(&prompt, "Password for %s at %s: ", shr, srv) == |
60 |
|
|
- -1) { |
61 |
|
|
+ int rc; |
62 |
|
|
+ |
63 |
|
|
+ rc = asprintf(&prompt, |
64 |
|
|
+ "Password for [%s] connecting to //%s/%s: ", |
65 |
|
|
+ un, shr, srv); |
66 |
|
|
+ if (rc == -1) { |
67 |
|
|
return; |
68 |
|
|
} |
69 |
|
|
(void)samba_getpass(prompt, pw, pwlen, false, false); |
70 |
|
|
-- |
71 |
|
|
2.9.3 |
72 |
|
|
|