From 36fc0ea221a830d0a63aa63ce55a7bee3e7551ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Wed, 2 Jun 2004 19:21:36 +0000 Subject: [PATCH] implement krb5_set_password_using_ccache git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@13908 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/changepw.c | 75 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 58 insertions(+), 17 deletions(-) diff --git a/lib/krb5/changepw.c b/lib/krb5/changepw.c index c376678d3..7dfffb636 100644 --- a/lib/krb5/changepw.c +++ b/lib/krb5/changepw.c @@ -685,18 +685,60 @@ krb5_change_password (krb5_context context, */ krb5_error_code KRB5_LIB_FUNCTION -krb5_set_password (krb5_context context, - krb5_ccache ccache, - char *newpw, - krb5_principal targprinc, - int *result_code, - krb5_data *result_code_string, - krb5_data *result_string) +krb5_set_password(krb5_context context, + krb5_creds *creds, + char *newpw, + krb5_principal targprinc, + int *result_code, + krb5_data *result_code_string, + krb5_data *result_string) +{ + krb5_principal principal = NULL; + krb5_error_code ret = 0; + int i; + + *result_code = KRB5_KPASSWD_MALFORMED; + result_code_string->data = result_string->data = NULL; + result_code_string->length = result_string->length = 0; + + if (targprinc == NULL) { + ret = krb5_get_default_principal(context, &principal); + if (ret) + return ret; + } else + principal = targprinc; + + for (i = 0; procs[i].name != NULL; i++) { + *result_code = 0; + ret = change_password_loop(context, creds, targprinc, newpw, + result_code, result_code_string, + result_string, + &procs[i]); + if (ret == 0 && *result_code == 0) + break; + } + + if (targprinc == NULL) + krb5_free_principal(context, principal); + return ret; +} + +/* + * + */ + +krb5_error_code KRB5_LIB_FUNCTION +krb5_set_password_using_ccache(krb5_context context, + krb5_ccache ccache, + char *newpw, + krb5_principal targprinc, + int *result_code, + krb5_data *result_code_string, + krb5_data *result_string) { krb5_creds creds, *credsp; krb5_error_code ret; krb5_principal principal = NULL; - int i; *result_code = KRB5_KPASSWD_MALFORMED; result_code_string->data = result_string->data = NULL; @@ -729,15 +771,14 @@ krb5_set_password (krb5_context context, if (ret) goto out; - for (i = 0; procs[i].name != NULL; i++) { - *result_code = 0; - ret = change_password_loop(context, credsp, targprinc, newpw, - result_code, result_code_string, - result_string, - &procs[i]); - if (ret == 0 && *result_code == 0) - break; - } + ret = krb5_set_password(context, + credsp, + newpw, + principal, + result_code, + result_code_string, + result_string); + krb5_free_creds(context, credsp); return ret;