summaryrefslogtreecommitdiff
path: root/source3/libads/krb5_setpw.c
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2002-10-01 18:26:00 +0000
committerGerald Carter <jerry@samba.org>2002-10-01 18:26:00 +0000
commitf2d1f19a66ebaf9b88d23c0faa2412536cc74cda (patch)
tree781120ed548c3f38de9d40795a426de525e7865b /source3/libads/krb5_setpw.c
parent2fb5c7c580a3fff3c7d477b65a1c4852af86433b (diff)
downloadsamba-f2d1f19a66ebaf9b88d23c0faa2412536cc74cda.tar.gz
samba-f2d1f19a66ebaf9b88d23c0faa2412536cc74cda.tar.bz2
samba-f2d1f19a66ebaf9b88d23c0faa2412536cc74cda.zip
syncing up with HEAD. Seems to be a lot of differences creeping in
(i ignored the new SAMBA stuff, but the rest of this looks like it should have been merged already). (This used to be commit 3de09e5cf1f667e410ee8b9516a956860ce7290f)
Diffstat (limited to 'source3/libads/krb5_setpw.c')
-rw-r--r--source3/libads/krb5_setpw.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/source3/libads/krb5_setpw.c b/source3/libads/krb5_setpw.c
index a49b6cbe3b..8079c0953f 100644
--- a/source3/libads/krb5_setpw.c
+++ b/source3/libads/krb5_setpw.c
@@ -471,4 +471,35 @@ ADS_STATUS kerberos_set_password(const char *kpasswd_server,
}
+/**
+ * Set the machine account password
+ * @param ads connection to ads server
+ * @param hostname machine whose password is being set
+ * @param password new password
+ * @return status of password change
+ **/
+ADS_STATUS ads_set_machine_password(ADS_STRUCT *ads,
+ const char *hostname,
+ const char *password)
+{
+ ADS_STATUS status;
+ char *host = strdup(hostname);
+ char *principal;
+
+ strlower(host);
+
+ /*
+ we need to use the '$' form of the name here, as otherwise the
+ server might end up setting the password for a user instead
+ */
+ asprintf(&principal, "%s$@%s", host, ads->auth.realm);
+
+ status = krb5_set_password(ads->auth.kdc_server, principal, password, ads->auth.time_offset);
+
+ free(host);
+ free(principal);
+
+ return status;
+}
+
#endif