diff options
Diffstat (limited to 'source3/utils')
-rw-r--r-- | source3/utils/smbpasswd.c | 42 |
1 files changed, 32 insertions, 10 deletions
diff --git a/source3/utils/smbpasswd.c b/source3/utils/smbpasswd.c index a96a1c0f7b..902f59b245 100644 --- a/source3/utils/smbpasswd.c +++ b/source3/utils/smbpasswd.c @@ -254,6 +254,12 @@ handle password changing for root *************************************************************/ static int process_root(int argc, char *argv[]) { + /* + * Next two lines needed for SunOS and don't + * hurt anything else... + */ + extern char *optarg; + extern int optind; struct passwd *pwd; int ch; BOOL joining_domain = False; @@ -359,29 +365,39 @@ static int process_root(int argc, char *argv[]) exit(1); } - if (!remote_machine && !Get_Pwnam(user_name, True)) { - fprintf(stderr, "User \"%s\" was not found in system password file.\n", - user_name); - exit(1); - } - - if (user_name[strlen(user_name)-1] == '$') { - user_name[strlen(user_name)-1] = 0; - } - if (trust_account) { /* add the $ automatically */ static fstring buf; + /* + * Remove any trailing '$' before we + * generate the initial machine password. + */ + + if (user_name[strlen(user_name)-1] == '$') { + user_name[strlen(user_name)-1] = 0; + } + if (add_user) { new_passwd = xstrdup(user_name); strlower(new_passwd); } + /* + * Now ensure the username ends in '$' for + * the machine add. + */ + slprintf(buf, sizeof(buf)-1, "%s$", user_name); user_name = buf; } + if (!remote_machine && !Get_Pwnam(user_name, True)) { + fprintf(stderr, "User \"%s\" was not found in system password file.\n", + user_name); + exit(1); + } + if (remote_machine != NULL) { old_passwd = get_pass("Old SMB password:",stdin_passwd_get); } @@ -433,6 +449,12 @@ handle password changing for non-root *************************************************************/ static int process_nonroot(int argc, char *argv[]) { + /* + * Next two lines needed for SunOS and don't + * hurt anything else... + */ + extern char *optarg; + extern int optind; struct passwd *pwd = NULL; int ch; BOOL stdin_passwd_get = False; |