Fix merge botches:
authorTom Yu <tlyu@mit.edu>
Wed, 31 Jan 2007 00:53:11 +0000 (00:53 +0000)
committerTom Yu <tlyu@mit.edu>
Wed, 31 Jan 2007 00:53:11 +0000 (00:53 +0000)
restore krb5_get_init_creds_opt_set_change_password_prompt()

undo accidental reversion of preauth_tryagain change to
krb5_get_init_creds()

ticket: 5420
status: open

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@19131 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/krb5/krb/get_in_tkt.c
src/lib/krb5/krb/gic_opt.c

index efde9147b6aa02261df14b7bc4a3d210b26a60f3..ee0a1127e7568ac280a4cff5c1a3ea8737fc3343 100644 (file)
@@ -1114,18 +1114,27 @@ krb5_get_init_creds(krb5_context context,
                                       &get_data_rock, options)))
                goto cleanup;
        } else {
-           /* retrying after an error other than PREAUTH_NEEDED, using e-data
-            * to figure out what to change */
-           if (krb5_do_preauth_tryagain(context,
-                                        &request,
-                                        encoded_request_body,
-                                        encoded_previous_request,
-                                        preauth_to_use, &request.padata,
-                                        err_reply,
-                                        &salt, &s2kparams, &etype, &as_key,
-                                        prompter, prompter_data,
-                                        gak_fct, gak_data,
-                                        &get_data_rock, options)) {
+           if (preauth_to_use != NULL) {
+               /*
+                * Retry after an error other than PREAUTH_NEEDED,
+                * using e-data to figure out what to change.
+                */
+               ret = krb5_do_preauth_tryagain(context,
+                                              &request,
+                                              encoded_request_body,
+                                              encoded_previous_request,
+                                              preauth_to_use, &request.padata,
+                                              err_reply,
+                                              &salt, &s2kparams, &etype,
+                                              &as_key,
+                                              prompter, prompter_data,
+                                              gak_fct, gak_data,
+                                              &get_data_rock, options);
+           } else {
+               /* No preauth supplied, so can't query the plug-ins. */
+               ret = KRB5KRB_ERR_GENERIC;
+           }
+           if (ret) {
                /* couldn't come up with anything better */
                ret = err_reply->error + ERROR_TABLE_BASE_krb5;
            }
index c96782088a233a24c4181efe193a693079efcba1..bbf2eb2867e411be6c6837d7f796e61008b4bd50 100644 (file)
@@ -64,6 +64,15 @@ krb5_get_init_creds_opt_set_salt(krb5_get_init_creds_opt *opt, krb5_data *salt)
    opt->salt = salt;
 }
 
+void KRB5_CALLCONV
+krb5_get_init_creds_opt_set_change_password_prompt(krb5_get_init_creds_opt *opt, int prompt)
+{
+   if (prompt)
+     opt->flags |= KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT;
+   else
+     opt->flags &= ~KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT;
+}
+
 /*
  * Extending the krb5_get_init_creds_opt structure.  The original
  * krb5_get_init_creds_opt structure is defined publicly.  The