pull up r20028 from trunk
authorTom Yu <tlyu@mit.edu>
Mon, 1 Oct 2007 23:53:38 +0000 (23:53 +0000)
committerTom Yu <tlyu@mit.edu>
Mon, 1 Oct 2007 23:53:38 +0000 (23:53 +0000)
 r20028@cathode-dark-space:  jaltman | 2007-10-01 01:19:05 -0400
 ticket: new
 subject: NIM: BUG: APP: leaking prompts in obtain new credentials dialog

 The Kerberos v5 plug-in for Network Identity Manager was not clearing
 the list of prompts properly when a user changes the active identity
 in the new credentials dialog.  The stale prompts would be visible to
 the user if the newly selected identity is invalid or the new identity
 cannot be validated.

 This patch clears the prompts if there is an identity change.

ticket: 5793
version_fixed: 1.6.3

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/krb5-1-6@20069 dc483132-0cff-0310-8789-dd5450dbe970

src/windows/identity/plugins/krb5/krb5newcreds.c

index 410393cafa2fa7991d3052cb073d06ada27f69a9..6b64302c37f5e2699bf45e93070c085826694b46 100644 (file)
@@ -2039,10 +2039,22 @@ k5_msg_cred_dialog(khm_int32 msg_type,
 
             /* if the fiber is already in a kinit, cancel it */
             if(g_fjob.state == FIBER_STATE_KINIT) {
+                khm_boolean clear_prompts = TRUE;
+
+                khui_cw_lock_nc(nc);
+                if (nc->n_identities > 0 &&
+                    kcdb_identity_is_equal(nc->identities[0], g_fjob.identity)) {
+                    clear_prompts = FALSE;
+                }
+                khui_cw_unlock_nc(nc);
+
                 g_fjob.command = FIBER_CMD_CANCEL;
                 SwitchToFiber(k5_kinit_fiber);
                 /* we get here when the cancel operation completes */
                 k5_free_kinit_job();
+
+                if (clear_prompts)
+                    khui_cw_clear_prompts(nc);
             }
 
             khui_cw_lock_nc(nc);