101
102
get_name_from_passwd_file(argv[0], context, &princ);
104
krb5_get_init_creds_opt_init(&opts);
105
krb5_get_init_creds_opt_set_tkt_life(&opts, 5*60);
106
krb5_get_init_creds_opt_set_renew_life(&opts, 0);
107
krb5_get_init_creds_opt_set_forwardable(&opts, 0);
108
krb5_get_init_creds_opt_set_proxiable(&opts, 0);
105
if ((ret = krb5_get_init_creds_opt_alloc(context, &opts))) {
106
com_err(argv[0], ret, "allocating krb5_get_init_creds_opt");
109
krb5_get_init_creds_opt_set_tkt_life(opts, 5*60);
110
krb5_get_init_creds_opt_set_renew_life(opts, 0);
111
krb5_get_init_creds_opt_set_forwardable(opts, 0);
112
krb5_get_init_creds_opt_set_proxiable(opts, 0);
110
114
if ((ret = krb5_get_init_creds_password(context, &creds, princ, NULL,
111
115
krb5_prompter_posix, NULL,
112
0, "kadmin/changepw", &opts))) {
116
0, "kadmin/changepw", opts))) {
113
117
if (ret == KRB5KRB_AP_ERR_BAD_INTEGRITY)
114
118
com_err(argv[0], 0,
115
119
"Password incorrect while getting initial ticket");
117
121
com_err(argv[0], ret, "getting initial ticket");
122
krb5_get_init_creds_opt_free(context, opts);
121
126
pwlen = sizeof(pw);
122
127
if ((ret = krb5_read_password(context, P1, P2, pw, &pwlen))) {
123
128
com_err(argv[0], ret, "while reading password");
129
krb5_get_init_creds_opt_free(context, opts);
128
134
&result_code, &result_code_string,
129
135
&result_string))) {
130
136
com_err(argv[0], ret, "changing password");
137
krb5_get_init_creds_opt_free(context, opts);
137
144
result_string.length?": ":"",
138
145
(int) result_string.length,
139
146
result_string.data ? result_string.data : "");
147
krb5_get_init_creds_opt_free(context, opts);
144
152
free(result_string.data);
145
153
if (result_code_string.data != NULL)
146
154
free(result_code_string.data);
155
krb5_get_init_creds_opt_free(context, opts);
148
157
printf("Password changed.\n");