diff options
author | Jeremy Allison <jra@samba.org> | 1998-04-17 19:29:51 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 1998-04-17 19:29:51 +0000 |
commit | 373d7c62577c13e1a85043844953a8d779858432 (patch) | |
tree | baefa96a0cdba07e3d71ce6c3ecf26396347d886 /source3/utils | |
parent | a406ad5039bcdefb67b2093a42275882e71078c9 (diff) | |
download | samba-373d7c62577c13e1a85043844953a8d779858432.tar.gz samba-373d7c62577c13e1a85043844953a8d779858432.tar.bz2 samba-373d7c62577c13e1a85043844953a8d779858432.zip |
Changing of machine passwords now works !!!!!!
smbdes.c: Added cred_hash3.
smbpasswd.c: Fixes for adding a machine account (needs more work).
lib/rpc/server/srv_netlog.c: Turn on the machine password changing
code by default (calls cred_hash3).
Jeremy.
(This used to be commit 50aa513b969c6e41911aeee8207b065f93af0beb)
Diffstat (limited to 'source3/utils')
-rw-r--r-- | source3/utils/smbpasswd.c | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/source3/utils/smbpasswd.c b/source3/utils/smbpasswd.c index ca59ae52e9..97a38977dc 100644 --- a/source3/utils/smbpasswd.c +++ b/source3/utils/smbpasswd.c @@ -576,6 +576,25 @@ int main(int argc, char **argv) } if(*user_name) { + + if(machine_account) { + int username_len = strlen(user_name); + if(username_len >= sizeof(pstring) - 1) { + fprintf(stderr, "%s: machine account name too long.\n", user_name); + exit(1); + } + + if(user_name[username_len-1] != '$') { + user_name[username_len] = '$'; + user_name[username_len+1] = '\0'; + } + } + + /* + * Setup the pwd struct to point to known + * values for a machine account (it doesn't + * exist in /etc/passwd). + */ if((pwd = getpwnam(user_name)) == NULL) { fprintf(stderr, "%s: User \"%s\" was not found in system password file.\n", prog_name, user_name); @@ -630,6 +649,8 @@ int main(int argc, char **argv) strncpy(new_passwd, user_name, sizeof(fstring)); new_passwd[sizeof(fstring)-1] = '\0'; strlower(new_passwd); + if(new_passwd[strlen(new_passwd)-1] == '$') + new_passwd[strlen(new_passwd)-1] = '\0'; } /* @@ -741,17 +762,7 @@ int main(int argc, char **argv) * a '$' etc.... */ - if(machine_account) { - int username_len = strlen(user_name); - if(username_len >= sizeof(pstring) - 1) { - fprintf(stderr, "%s: machine account name too long.\n", user_name); - exit(1); - } - - if(user_name[username_len] != '$') { - user_name[username_len] = '$'; - user_name[username_len+1] = '\0'; - } + if(machine_account && !pwd) { /* * Setup the pwd struct to point to known |