update to new prompter, use prompter types and send two prompts at
once when changning password git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@9929 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -181,7 +181,7 @@ print_expire (krb5_context context,
|
|||||||
time_t tmp = lr->val[i].lr_value;
|
time_t tmp = lr->val[i].lr_value;
|
||||||
|
|
||||||
asprintf (&p, "Your password will expire at %s", ctime(&tmp));
|
asprintf (&p, "Your password will expire at %s", ctime(&tmp));
|
||||||
(*prompter) (context, data, p, 0, NULL);
|
(*prompter) (context, data, NULL, p, 0, NULL);
|
||||||
free (p);
|
free (p);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -193,7 +193,7 @@ print_expire (krb5_context context,
|
|||||||
time_t t = *rep->enc_part.key_expiration;
|
time_t t = *rep->enc_part.key_expiration;
|
||||||
|
|
||||||
asprintf (&p, "Your password/account will expire at %s", ctime(&t));
|
asprintf (&p, "Your password/account will expire at %s", ctime(&t));
|
||||||
(*prompter) (context, data, p, 0, NULL);
|
(*prompter) (context, data, NULL, p, 0, NULL);
|
||||||
free (p);
|
free (p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -284,7 +284,7 @@ change_password (krb5_context context,
|
|||||||
void *data,
|
void *data,
|
||||||
krb5_get_init_creds_opt *old_options)
|
krb5_get_init_creds_opt *old_options)
|
||||||
{
|
{
|
||||||
krb5_prompt prompt;
|
krb5_prompt prompts[2];
|
||||||
krb5_error_code ret;
|
krb5_error_code ret;
|
||||||
krb5_creds cpw_cred;
|
krb5_creds cpw_cred;
|
||||||
char buf1[BUFSIZ], buf2[BUFSIZ];
|
char buf1[BUFSIZ], buf2[BUFSIZ];
|
||||||
@@ -325,27 +325,31 @@ change_password (krb5_context context,
|
|||||||
password_data.data = buf1;
|
password_data.data = buf1;
|
||||||
password_data.length = sizeof(buf1);
|
password_data.length = sizeof(buf1);
|
||||||
|
|
||||||
prompt.hidden = 1;
|
prompts[0].hidden = 1;
|
||||||
prompt.prompt = "New password: ";
|
prompts[0].prompt = "New password: ";
|
||||||
prompt.reply = &password_data;
|
prompts[0].reply = &password_data;
|
||||||
|
prompts[0].type = KRB5_PROMPT_TYPE_NEW_PASSWORD;
|
||||||
ret = (*prompter) (context, data, "Changing password", 1, &prompt);
|
|
||||||
if (ret)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
password_data.data = buf2;
|
password_data.data = buf2;
|
||||||
password_data.length = sizeof(buf2);
|
password_data.length = sizeof(buf2);
|
||||||
|
|
||||||
prompt.hidden = 1;
|
prompts[1].hidden = 1;
|
||||||
prompt.prompt = "Repeat new password: ";
|
prompts[1].prompt = "Repeat new password: ";
|
||||||
prompt.reply = &password_data;
|
prompts[1].reply = &password_data;
|
||||||
|
prompts[1].type = KRB5_PROMPT_TYPE_NEW_PASSWORD_AGAIN;
|
||||||
|
|
||||||
ret = (*prompter) (context, data, "Changing password", 1, &prompt);
|
ret = (*prompter) (context, data, NULL, "Changing password",
|
||||||
if (ret)
|
2, prompts);
|
||||||
|
if (ret) {
|
||||||
|
memset (buf1, 0, sizeof(buf1));
|
||||||
|
memset (buf2, 0, sizeof(buf2));
|
||||||
goto out;
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
if (strcmp (buf1, buf2) == 0)
|
if (strcmp (buf1, buf2) == 0)
|
||||||
break;
|
break;
|
||||||
|
memset (buf1, 0, sizeof(buf1));
|
||||||
|
memset (buf2, 0, sizeof(buf2));
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = krb5_change_password (context,
|
ret = krb5_change_password (context,
|
||||||
@@ -361,7 +365,7 @@ change_password (krb5_context context,
|
|||||||
(int)result_string.length,
|
(int)result_string.length,
|
||||||
(char*)result_string.data);
|
(char*)result_string.data);
|
||||||
|
|
||||||
ret = (*prompter) (context, data, p, 0, NULL);
|
ret = (*prompter) (context, data, NULL, p, 0, NULL);
|
||||||
free (p);
|
free (p);
|
||||||
if (result_code == 0) {
|
if (result_code == 0) {
|
||||||
strlcpy (newpw, buf1, newpw_sz);
|
strlcpy (newpw, buf1, newpw_sz);
|
||||||
@@ -418,8 +422,9 @@ krb5_get_init_creds_password(krb5_context context,
|
|||||||
password_data.length = sizeof(buf);
|
password_data.length = sizeof(buf);
|
||||||
prompt.hidden = 1;
|
prompt.hidden = 1;
|
||||||
prompt.reply = &password_data;
|
prompt.reply = &password_data;
|
||||||
|
prompt.type = KRB5_PROMPT_TYPE_PASSWORD;
|
||||||
|
|
||||||
ret = (*prompter) (context, data, NULL, 1, &prompt);
|
ret = (*prompter) (context, data, NULL, NULL, 1, &prompt);
|
||||||
free (prompt.prompt);
|
free (prompt.prompt);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
memset (buf, 0, sizeof(buf));
|
memset (buf, 0, sizeof(buf));
|
||||||
|
Reference in New Issue
Block a user