summaryrefslogtreecommitdiff
path: root/source4/lib/cmdline
diff options
context:
space:
mode:
Diffstat (limited to 'source4/lib/cmdline')
-rw-r--r--source4/lib/cmdline/credentials.c19
-rw-r--r--source4/lib/cmdline/popt_common.c8
2 files changed, 19 insertions, 8 deletions
diff --git a/source4/lib/cmdline/credentials.c b/source4/lib/cmdline/credentials.c
index d827baed76..7832e01e4b 100644
--- a/source4/lib/cmdline/credentials.c
+++ b/source4/lib/cmdline/credentials.c
@@ -29,14 +29,23 @@ static const char *cmdline_get_userpassword(struct cli_credentials *credentials)
{
char *prompt;
char *ret;
-
- prompt = talloc_asprintf(NULL, "Password for [%s\\%s]:",
- cli_credentials_get_domain(credentials),
- cli_credentials_get_username(credentials));
+ char *domain;
+ char *username;
+ TALLOC_CTX *mem_ctx = talloc_new(NULL);
+
+ domain = cli_credentials_get_domain(credentials);
+ username = cli_credentials_get_username(credentials, mem_ctx);
+ if (domain && domain[0]) {
+ prompt = talloc_asprintf(mem_ctx, "Password for [%s\\%s]:",
+ domain, username);
+ } else {
+ prompt = talloc_asprintf(mem_ctx, "Password for [%s]:",
+ username);
+ }
ret = getpass(prompt);
- talloc_free(prompt);
+ talloc_free(mem_ctx);
return ret;
}
diff --git a/source4/lib/cmdline/popt_common.c b/source4/lib/cmdline/popt_common.c
index 4e808652f7..d3bd0a35a4 100644
--- a/source4/lib/cmdline/popt_common.c
+++ b/source4/lib/cmdline/popt_common.c
@@ -220,9 +220,11 @@ static void popt_common_credentials_callback(poptContext con,
char *lp;
cli_credentials_parse_string(cmdline_credentials, arg, CRED_SPECIFIED);
-
- if (cmdline_credentials->password && (lp=strchr_m(arg,'%'))) {
- memset(lp,0,strlen(cmdline_credentials->password));
+ /* This breaks the abstraction, including the const above */
+ if (lp=strchr_m(arg,'%')) {
+ lp[0]='\0';
+ lp++;
+ memset(lp,0,strlen(lp));
}
}
break;