From f4447df41b59f6939528f517a07078c596d2b8b5 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 16 Nov 1998 20:19:57 +0000 Subject: Added fixes for machine accounts. Jeremy. (This used to be commit 7aa644c2f996433f8ec125bfd4221aec49bece2b) --- source3/utils/smbpasswd.c | 42 ++++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) (limited to 'source3/utils/smbpasswd.c') 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; -- cgit