summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Lendecke <vlendec@samba.org>2003-12-26 19:39:50 +0000
committerVolker Lendecke <vlendec@samba.org>2003-12-26 19:39:50 +0000
commit6af53b74840e3940546f9dd725b5cc072358885f (patch)
tree3d7ee525e066ec3d6eb4e61837b9e600344fbc90
parent4205973b4315300860b512193b389fbb683cf3a0 (diff)
downloadsamba-6af53b74840e3940546f9dd725b5cc072358885f.tar.gz
samba-6af53b74840e3940546f9dd725b5cc072358885f.tar.bz2
samba-6af53b74840e3940546f9dd725b5cc072358885f.zip
Collecting some minor patches...
This adds the ability to specify the new user password for 'net ads password' on the command line. As this needs the admin password on the command line, the information leak is minimally more. Patch from gd@suse.de Volker (This used to be commit 68af56f517014476ab4549de72a0585a0a07c72f)
-rw-r--r--source3/utils/net_ads.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/source3/utils/net_ads.c b/source3/utils/net_ads.c
index 9404ae4b24..9ee2f3c093 100644
--- a/source3/utils/net_ads.c
+++ b/source3/utils/net_ads.c
@@ -44,9 +44,9 @@ int net_ads_usage(int argc, const char **argv)
"\n\tdump the machine account details to stdout\n"
"\nnet ads lookup"\
"\n\tperform a CLDAP search on the server\n"
-"\nnet ads password <username@realm> -Uadmin_username@realm%%admin_pass"\
+"\nnet ads password <username@realm> <password> -Uadmin_username@realm%%admin_pass"\
"\n\tchange a user's password using an admin account"\
-"\n\t(note: use realm in UPPERCASE)\n"\
+"\n\t(note: use realm in UPPERCASE, prompts if password is obmitted)\n"\
"\nnet ads changetrustpw"\
"\n\tchange the trust account password of this machine in the AD tree\n"\
"\nnet ads printer [info | publish | remove] <printername> <servername>"\
@@ -1016,7 +1016,7 @@ static int net_ads_password(int argc, const char **argv)
}
- if (argc != 1) {
+ if (argc < 1) {
d_printf("ERROR: You must say which username to change password for\n");
return -1;
}
@@ -1048,22 +1048,24 @@ static int net_ads_password(int argc, const char **argv)
return -1;
}
- asprintf(&prompt, "Enter new password for %s:", user);
-
- new_password = getpass(prompt);
+ if (argv[1]) {
+ new_password = (char *)argv[1];
+ } else {
+ asprintf(&prompt, "Enter new password for %s:", user);
+ new_password = getpass(prompt);
+ free(prompt);
+ }
ret = kerberos_set_password(ads->auth.kdc_server, auth_principal,
auth_password, user, new_password, ads->auth.time_offset);
if (!ADS_ERR_OK(ret)) {
d_printf("Password change failed :-( ...\n");
ads_destroy(&ads);
- free(prompt);
return -1;
}
d_printf("Password change for %s completed.\n", user);
ads_destroy(&ads);
- free(prompt);
return 0;
}