NIM: BUG: APP: leaking prompts in obtain new credentials dialog
authorJeffrey Altman <jaltman@secure-endpoints.com>
Mon, 1 Oct 2007 05:19:05 +0000 (05:19 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Mon, 1 Oct 2007 05:19:05 +0000 (05:19 +0000)
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: new

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@20028 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);