From c365b64a31142a6ae4628741dd5b695ac66bb2a3 Mon Sep 17 00:00:00 2001 From: Keith Vetter Date: Fri, 31 Mar 1995 02:05:49 +0000 Subject: Commit on the whole tree to make a checkpoint for a working windows world git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@5315 dc483132-0cff-0310-8789-dd5450dbe970 --- src/windows/cns/changelo | 11 ++++- src/windows/cns/cns.c | 120 ++++++++++++++++++++++++++++------------------ src/windows/cns/cns.h | 48 +++++++++++++------ src/windows/cns/cns.rc | 96 +++++++++++++++++++++++++------------ src/windows/cns/makefile | 2 +- src/windows/cns/tktlist.c | 62 +++++++++++++++++++++--- 6 files changed, 238 insertions(+), 101 deletions(-) (limited to 'src/windows/cns') diff --git a/src/windows/cns/changelo b/src/windows/cns/changelo index e61d607a4a..b0795a0af9 100644 --- a/src/windows/cns/changelo +++ b/src/windows/cns/changelo @@ -1,6 +1,13 @@ -Tue Mar 28 12:00:00 1995 Keith Vetter (keithv@fusion.com) +Thu Mar 30 16:11:27 1995 Keith Vetter (keithv@fusion.com) - * ChangeLog renamed to changelo to avoid having to always rename it. + * cns.h, cns.c, tktlist.c: improved error handling for a bad cache. + * cns.rc: conditionally removed more instance stuff. + +Tue Mar 28 21:52:01 1995 Keith Vetter (keithv@fusion.com) + + * cns.rc, cns.h, cns.c: removed instance edit box for K5. + * makefile: RFLAGS need version k4 or k5 set. + * tktlist.c: also displays ticket flags. Mon Mar 27 20:31:04 1995 Keith Vetter (keithv@fusion.com) diff --git a/src/windows/cns/cns.c b/src/windows/cns/cns.c index facd1a68fa..f75c40a456 100644 --- a/src/windows/cns/cns.c +++ b/src/windows/cns/cns.c @@ -630,10 +630,12 @@ password_initdialog ( LPARAM lparam) { char name[ANAME_SZ]; - char instance[INST_SZ]; char realm[REALM_SZ]; HWND hwndparent; int id; + #ifdef KRB4 + char instance[INST_SZ]; + #endif center_dialog(hwnd); set_dialog_font(hwnd, hfontdialog); @@ -645,9 +647,11 @@ password_initdialog ( trim(name); SetDlgItemText(hwnd, IDD_PASSWORD_NAME, name); - GetDlgItemText(hwndparent, IDD_LOGIN_INSTANCE, instance, sizeof(instance)); - trim(instance); - SetDlgItemText(hwnd, IDD_PASSWORD_INSTANCE, instance); + #ifdef KRB4 + GetDlgItemText(hwndparent, IDD_LOGIN_INSTANCE, instance, sizeof(instance)); + trim(instance); + SetDlgItemText(hwnd, IDD_PASSWORD_INSTANCE, instance); + #endif GetDlgItemText(hwndparent, IDD_LOGIN_REALM, realm, sizeof(realm)); trim(realm); @@ -1262,9 +1266,12 @@ kwin_init_name ( SetDlgItemText(hwnd, IDD_LOGIN_NAME, name); name[0] = 0; GetDlgItemText(hwnd, IDD_LOGIN_NAME, name, sizeof(name)); - SetDlgItemText(hwnd, IDD_LOGIN_INSTANCE, instance); SetDlgItemText(hwnd, IDD_LOGIN_REALM, realm); + #ifdef KRB4 + SetDlgItemText(hwnd, IDD_LOGIN_INSTANCE, instance); + #endif + } /* kwin_init_name */ @@ -1572,26 +1579,21 @@ kwin_size ( } /* - * Edit fields + * Edit fields: stretch boxes, keeping the gap between boxes equal to + * what it was on entry. */ editbottom += r.top; - cx = 0; - for (i = IDD_MIN_EDIT; i <= IDD_MAX_EDIT; i++) { - hwnditem = GetDlgItem(hwnd, i); - windowrect(hwnditem, hwnd, &r); - - if (i == IDD_MIN_EDIT) { - gap = r.right; - hmargin = r.left; - editbottom += r.bottom; - titlebottom = -r.top; - } - if (i == IDD_MIN_EDIT + 1) - gap = r.left - gap; + hwnditem = GetDlgItem(hwnd, IDD_MIN_EDIT); + windowrect(hwnditem, hwnd, &r); + gap = r.right; + hmargin = r.left; + editbottom += r.bottom; + titlebottom = -r.top; - cx += r.right - r.left; - } + hwnditem = GetDlgItem(hwnd, IDD_MIN_EDIT + 1); + windowrect(hwnditem, hwnd, &r); + gap = r.left - gap; cx = cxdlg - 2 * hmargin - (IDD_MAX_EDIT - IDD_MIN_EDIT) * gap; cx = cx / (IDD_MAX_EDIT - IDD_MIN_EDIT + 1); @@ -1779,7 +1781,8 @@ kwin_timer ( break; } } - krb5_cc_end_seq_get(k5_context, k5_ccache, &cursor); + if (code == 0 || code == KRB5_CC_END) + krb5_cc_end_seq_get(k5_context, k5_ccache, &cursor); #endif @@ -1837,7 +1840,6 @@ kwin_command ( LPARAM lparam) { char name[ANAME_SZ]; - char instance[INST_SZ]; char realm[REALM_SZ]; char password[MAX_KPW_LEN]; HCURSOR hcursor; @@ -1846,6 +1848,7 @@ kwin_command ( char menuitem[MAX_K_NAME_SZ + 3]; char copyright[128]; #ifdef KRB4 + char instance[INST_SZ]; int lifetime; int krc; #endif @@ -1863,7 +1866,7 @@ kwin_command ( #endif #ifdef KRB5 - EnableWindow(GetDlgItem(hwnd, IDD_TICKET_DELETE), k5_get_num_cred() > 0); + EnableWindow(GetDlgItem(hwnd, IDD_TICKET_DELETE), k5_get_num_cred(0) > 0); #endif GetDlgItemText(hwnd, IDD_LOGIN_NAME, name, sizeof(name)); @@ -1917,13 +1920,16 @@ kwin_command ( GetDlgItemText(hwnd, IDD_LOGIN_NAME, name, sizeof(name)); trim(name); - GetDlgItemText(hwnd, IDD_LOGIN_INSTANCE, instance, sizeof(instance)); - trim(instance); GetDlgItemText(hwnd, IDD_LOGIN_REALM, realm, sizeof(realm)); trim(realm); GetDlgItemText(hwnd, IDD_LOGIN_PASSWORD, password, sizeof(password)); trim(password); + #ifdef KRB4 + GetDlgItemText(hwnd, IDD_LOGIN_INSTANCE, instance, sizeof(instance)); + trim(instance); + #endif + hcursor = SetCursor(LoadCursor(NULL, IDC_WAIT)); lifetime = GetPrivateProfileInt(INI_OPTIONS, INI_DURATION, DEFAULT_TKT_LIFE * 5, KERBEROS_INI); @@ -1973,7 +1979,7 @@ kwin_command ( if (server) krb5_free_principal(k5_context, server); - #endif + #endif /* KRB5 */ end_blocking_hook(); SetCursor(hcursor); @@ -2183,7 +2189,8 @@ kwin_paint ( break; } - krb5_cc_end_seq_get(k5_context, k5_ccache, &cursor); + if (code == 0 || code == KRB5_CC_END) + krb5_cc_end_seq_get(k5_context, k5_ccache, &cursor); #endif hdc = BeginPaint(hwnd, &ps); @@ -2496,6 +2503,14 @@ init_instance ( krb5_init_context(&k5_context); krb5_init_ets(k5_context); krb5_cc_default(k5_context, &k5_ccache); + + i = k5_get_num_cred (0); /* Test integrity */ + if (i == -1) { + remove (krb5_cc_get_name(k5_context, k5_ccache)); + i = k5_get_num_cred (1); + if (i == -1) + return FALSE; + } #endif return TRUE; @@ -2754,11 +2769,6 @@ WinMain ( #ifdef KRB5 -void -debugbox () { - MessageBox (NULL, "foobar", "FOOBAR", IDOK | MB_ICONINFORMATION); -} - /*+ * Function: destroys all tickets in a k5 ccache * @@ -2795,35 +2805,52 @@ k5_dest_tkt (void) { * * k5_get_num_cred * - * Returns: number of creds in the credential cache + * Returns: number of creds in the credential cache, -1 on error * */ static int -k5_get_num_cred () { +k5_get_num_cred (int verbose) { krb5_error_code code; krb5_cc_cursor cursor; krb5_creds c; int ncreds = 0; + /* Turn off OPENCLOSE and leave open while we use ccache */ + if (code = krb5_cc_set_flags(k5_context, k5_ccache, 0)) { + if (code == KRB5_FCC_NOFILE) + return 0; + if (verbose) + com_err (NULL, code, + "while setting cache flags (ticket cache %s)", + krb5_cc_get_name(k5_context, k5_ccache)); + return -1; + } + if (code = krb5_cc_start_seq_get(k5_context, k5_ccache, &cursor)) { - if (code != KRB5_FCC_NOFILE) - com_err (NULL, code, "while starting to retrieve tickets"); - return 0; + if (verbose) + com_err (NULL, code, "while starting to retrieve tickets."); + return -1; } - while (1) { + while (1) { /* Loop and get creds */ code = krb5_cc_next_cred(k5_context, k5_ccache, &cursor, &c); if (code) break; ++ncreds; } - if (code == KRB5_CC_END) { /* End of ccache */ - if (code = krb5_cc_end_seq_get(k5_context, k5_ccache, &cursor)) - com_err (NULL, code, "while finishing ticket retrieval"); - } else { - com_err (NULL, code, "while retrieving a ticket"); - return 0; + if (code != KRB5_CC_END) { /* Error while looping??? */ + if (verbose) + com_err (NULL, code, "while retrieving a ticket."); + return -1; + } + + if (code = krb5_cc_end_seq_get(k5_context, k5_ccache, &cursor)) { + if (verbose) + com_err (NULL, code, "while closing ccache."); + } else if (code = krb5_cc_set_flags(k5_context, k5_ccache, KRB5_TC_OPENCLOSE)) { + if (verbose) + com_err(NULL, code, "while closing ccache."); } return ncreds; @@ -2846,7 +2873,8 @@ k5_get_num_cred2 () { break; ++ncreds; } - krb5_cc_end_seq_get(k5_context, k5_ccache, &cursor); + if (code == KRB5_CC_END) + krb5_cc_end_seq_get(k5_context, k5_ccache, &cursor); return ncreds; } diff --git a/src/windows/cns/cns.h b/src/windows/cns/cns.h index 006804d12c..7579400b8a 100644 --- a/src/windows/cns/cns.h +++ b/src/windows/cns/cns.h @@ -37,19 +37,39 @@ #define IDD_TICKET_LIST_TITLE 101 #define IDD_TICKET_LIST 102 - #define IDD_MIN_TITLE 103 - #define IDD_LOGIN_NAME_TITLE 103 - #define IDD_LOGIN_INSTANCE_TITLE 104 - #define IDD_LOGIN_REALM_TITLE 105 - #define IDD_LOGIN_PASSWORD_TITLE 106 - #define IDD_MAX_TITLE 106 - - #define IDD_MIN_EDIT 107 - #define IDD_LOGIN_NAME 107 - #define IDD_LOGIN_INSTANCE 108 - #define IDD_LOGIN_REALM 109 - #define IDD_LOGIN_PASSWORD 110 - #define IDD_MAX_EDIT 110 + #ifdef KRB4 + + #define IDD_MIN_TITLE 103 + #define IDD_LOGIN_NAME_TITLE 103 + #define IDD_LOGIN_INSTANCE_TITLE 104 + #define IDD_LOGIN_REALM_TITLE 105 + #define IDD_LOGIN_PASSWORD_TITLE 106 + #define IDD_MAX_TITLE 106 + + #define IDD_MIN_EDIT 107 + #define IDD_LOGIN_NAME 107 + #define IDD_LOGIN_INSTANCE 108 + #define IDD_LOGIN_REALM 109 + #define IDD_LOGIN_PASSWORD 110 + #define IDD_MAX_EDIT 110 + + #endif + + #ifdef KRB5 + + #define IDD_MIN_TITLE 103 + #define IDD_LOGIN_NAME_TITLE 103 + #define IDD_LOGIN_REALM_TITLE 104 + #define IDD_LOGIN_PASSWORD_TITLE 105 + #define IDD_MAX_TITLE 105 + + #define IDD_MIN_EDIT 107 + #define IDD_LOGIN_NAME 107 + #define IDD_LOGIN_REALM 108 + #define IDD_LOGIN_PASSWORD 109 + #define IDD_MAX_EDIT 109 + + #endif #define IDD_MIN_BUTTON 111 #define IDD_CHANGE_PASSWORD 111 @@ -124,7 +144,7 @@ time_t kwin_get_epoch(void); #ifdef KRB5 static krb5_error_code k5_dest_tkt (void); - static int k5_get_num_cred (void); + static int k5_get_num_cred (int verbose); static int k5_kname_parse (char *name, char *realm, char *fullname); static int k5_get_lrealm (char *realm); #endif diff --git a/src/windows/cns/cns.rc b/src/windows/cns/cns.rc index 7780b53b0e..55137252d5 100644 --- a/src/windows/cns/cns.rc +++ b/src/windows/cns/cns.rc @@ -49,49 +49,83 @@ FONT 8, "Arial" BEGIN CONTROL " Start Time End Time Ticket", IDD_TICKET_LIST_TITLE, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 16, 7, 240, 8 CONTROL "", IDD_TICKET_LIST, "LISTBOX", LBS_NOTIFY | LBS_DISABLENOSCROLL | LBS_OWNERDRAWFIXED | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL, 8, 18, 261, 52 - CONTROL "&Name", IDD_LOGIN_NAME_TITLE, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 6, 69, 27, 8 - CONTROL "&Instance", IDD_LOGIN_INSTANCE_TITLE, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 73, 69, 36, 8 - CONTROL "&Realm", IDD_LOGIN_REALM_TITLE, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 140, 69, 26, 8 - CONTROL "&Password", IDD_LOGIN_PASSWORD_TITLE, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 207, 69, 36, 8 - CONTROL "", IDD_LOGIN_NAME, "EDIT", ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 6, 79, 62, 12 - CONTROL "", IDD_LOGIN_INSTANCE, "EDIT", ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 73, 79, 62, 12 - CONTROL "", IDD_LOGIN_REALM, "EDIT", ES_LEFT | ES_AUTOHSCROLL | ES_UPPERCASE | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 140, 79, 62, 12 - CONTROL "", IDD_LOGIN_PASSWORD, "EDIT", ES_LEFT | ES_AUTOHSCROLL | ES_PASSWORD | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 207, 79, 62, 12 + #ifdef KRB4 + CONTROL "&Name", IDD_LOGIN_NAME_TITLE, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 6, 69, 27, 8 + CONTROL "&Instance", IDD_LOGIN_INSTANCE_TITLE, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 73, 69, 36, 8 + CONTROL "&Realm", IDD_LOGIN_REALM_TITLE, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 140, 69, 26, 8 + CONTROL "&Password", IDD_LOGIN_PASSWORD_TITLE, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 207, 69, 36, 8 + CONTROL "", IDD_LOGIN_NAME, "EDIT", ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 6, 79, 62, 12 + CONTROL "", IDD_LOGIN_INSTANCE, "EDIT", ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 73, 79, 62, 12 + CONTROL "", IDD_LOGIN_REALM, "EDIT", ES_LEFT | ES_AUTOHSCROLL | ES_UPPERCASE | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 140, 79, 62, 12 + CONTROL "", IDD_LOGIN_PASSWORD, "EDIT", ES_LEFT | ES_AUTOHSCROLL | ES_PASSWORD | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 207, 79, 62, 12 + #endif + #ifdef KRB5 + CONTROL "&Name", IDD_LOGIN_NAME_TITLE, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 6, 69, 27, 8 + CONTROL "&Realm", IDD_LOGIN_REALM_TITLE, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 140, 69, 26, 8 + CONTROL "&Password", IDD_LOGIN_PASSWORD_TITLE, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 207, 69, 36, 8 + CONTROL "", IDD_LOGIN_NAME, "EDIT", ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 6, 79, 62, 12 + CONTROL "", IDD_LOGIN_REALM, "EDIT", ES_LEFT | ES_AUTOHSCROLL | ES_UPPERCASE | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 73, 79, 62, 12 + CONTROL "", IDD_LOGIN_PASSWORD, "EDIT", ES_LEFT | ES_AUTOHSCROLL | ES_PASSWORD | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 207, 79, 62, 12 + #endif CONTROL "&Change Password...", IDD_CHANGE_PASSWORD, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 6, 96, 74, 14 CONTROL "&Delete", IDD_TICKET_DELETE, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 122, 96, 52, 14 CONTROL "&Login", IDD_LOGIN, "BUTTON", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 216, 96, 52, 14 END -ID_PASSWORD DIALOG 96, 50, 143, 129 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Change Password" -FONT 8, "Arial" -BEGIN - CONTROL "&Name:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 9, 53, 8 - CONTROL "", IDD_PASSWORD_NAME, "EDIT", ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_GROUP | WS_TABSTOP, 61, 6, 76, 12 - CONTROL "&Instance:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 26, 53, 8 - CONTROL "", IDD_PASSWORD_INSTANCE, "EDIT", ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 61, 23, 76, 12 - CONTROL "&Realm:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 43, 53, 8 - CONTROL "", IDD_PASSWORD_REALM, "EDIT", ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 61, 40, 76, 12 - CONTROL "&Old Password:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 60, 53, 8 - CONTROL "", IDD_OLD_PASSWORD, "EDIT", ES_LEFT | ES_AUTOHSCROLL | ES_PASSWORD | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 61, 57, 76, 12 - CONTROL "&New Password:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 77, 53, 8 - CONTROL "", IDD_NEW_PASSWORD1, "EDIT", ES_LEFT | ES_AUTOHSCROLL | ES_PASSWORD | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 61, 74, 76, 12 - CONTROL "&New Password:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 94, 53, 8 - CONTROL "", IDD_NEW_PASSWORD2, "EDIT", ES_LEFT | ES_AUTOHSCROLL | ES_PASSWORD | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 61, 91, 76, 12 - CONTROL "", IDD_PASSWORD_CR, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE, 5000, 5000, 0, 0 - CONTROL "OK", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 13, 110, 52, 14 - CONTROL "Cancel", IDCANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 77, 110, 52, 14 -END +#ifdef KRB4 + ID_PASSWORD DIALOG 96, 50, 143, 129 + STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU + CAPTION "Change Password" + FONT 8, "Arial" + BEGIN + CONTROL "&Name:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 9, 53, 8 + CONTROL "", IDD_PASSWORD_NAME, "EDIT", ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_GROUP | WS_TABSTOP, 61, 6, 76, 12 + CONTROL "&Instance:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 26, 53, 8 + CONTROL "", IDD_PASSWORD_INSTANCE, "EDIT", ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 61, 23, 76, 12 + CONTROL "&Realm:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 43, 53, 8 + CONTROL "", IDD_PASSWORD_REALM, "EDIT", ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 61, 40, 76, 12 + CONTROL "&Old Password:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 60, 53, 8 + CONTROL "", IDD_OLD_PASSWORD, "EDIT", ES_LEFT | ES_AUTOHSCROLL | ES_PASSWORD | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 61, 57, 76, 12 + CONTROL "&New Password:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 77, 53, 8 + CONTROL "", IDD_NEW_PASSWORD1, "EDIT", ES_LEFT | ES_AUTOHSCROLL | ES_PASSWORD | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 61, 74, 76, 12 + CONTROL "&New Password:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 94, 53, 8 + CONTROL "", IDD_NEW_PASSWORD2, "EDIT", ES_LEFT | ES_AUTOHSCROLL | ES_PASSWORD | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 61, 91, 76, 12 + CONTROL "", IDD_PASSWORD_CR, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE, 5000, 5000, 0, 0 + CONTROL "OK", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 13, 110, 52, 14 + CONTROL "Cancel", IDCANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 77, 110, 52, 14 + END +#endif /* KRB4 */ + +#ifdef KRB5 + ID_PASSWORD DIALOG 96, 50, 143, 112 + STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU + CAPTION "Change Password" + FONT 8, "Arial" + BEGIN + CONTROL "&Name:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 9, 53, 8 + CONTROL "", IDD_PASSWORD_NAME, "EDIT", ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_GROUP | WS_TABSTOP, 61, 6, 76, 12 + CONTROL "&Realm:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 26, 53, 8 + CONTROL "", IDD_PASSWORD_REALM, "EDIT", ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 61, 23, 76, 12 + CONTROL "&Old Password:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 43, 53, 8 + CONTROL "", IDD_OLD_PASSWORD, "EDIT", ES_LEFT | ES_AUTOHSCROLL | ES_PASSWORD | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 61, 40, 76, 12 + CONTROL "&New Password:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 60, 53, 8 + CONTROL "", IDD_NEW_PASSWORD1, "EDIT", ES_LEFT | ES_AUTOHSCROLL | ES_PASSWORD | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 61, 57, 76, 12 + CONTROL "&New Password:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 77, 53, 8 + CONTROL "", IDD_NEW_PASSWORD2, "EDIT", ES_LEFT | ES_AUTOHSCROLL | ES_PASSWORD | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 61, 74, 76, 12 + CONTROL "", IDD_PASSWORD_CR, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE, 5000, 5000, 0, 0 + CONTROL "OK", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 13, 93, 52, 14 + CONTROL "Cancel", IDCANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 77, 93, 52, 14 + END +#endif /* KRB5 */ ID_OPTS DIALOG 97, 52, 148, 107 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Kerberos Options" FONT 8, "Arial" BEGIN - CONTROL "&conf file:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 9, 40, 8 + CONTROL "&Conf file:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 9, 40, 8 CONTROL "", IDD_CONF, "EDIT", ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 60, 6, 82, 12 - CONTROL "&realms file:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 26, 40, 8 + CONTROL "&Realms file:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 26, 40, 8 CONTROL "", IDD_REALMS, "EDIT", ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 60, 23, 82, 12 CONTROL "&Ticket lifetime:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 43, 53, 8 CONTROL "", IDD_LIFETIME, "EDIT", ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 60, 40, 20, 12 diff --git a/src/windows/cns/makefile b/src/windows/cns/makefile index 7c81c73085..e743cd7028 100644 --- a/src/windows/cns/makefile +++ b/src/windows/cns/makefile @@ -39,7 +39,7 @@ CFLAGS = $(CFLAGS_RELEASE) $(INCLUDES) /D$(KRB)=1 ##### RC Compiler RC = rc -RFLAGS = /nologo $(INCLUDES) +RFLAGS = /nologo /D$(KRB)=1 $(INCLUDES) ##### Linker LINK = link diff --git a/src/windows/cns/tktlist.c b/src/windows/cns/tktlist.c index 8eb94a52f6..8f258c6401 100644 --- a/src/windows/cns/tktlist.c +++ b/src/windows/cns/tktlist.c @@ -112,6 +112,7 @@ ticket_init_list ( krb5_creds c; krb5_flags flags; char *sname; /* Name of the service */ + char *flags_string(krb5_creds *cred); #endif SendMessage(hwnd, WM_SETREDRAW, FALSE, 0); @@ -168,14 +169,14 @@ ticket_init_list ( flags = 0; if (code = krb5_cc_set_flags(k5_context, k5_ccache, flags)) { if (code != KRB5_FCC_NOFILE) { - com_err (NULL, code, - "while setting cache flags (ticket cache %s)", - krb5_cc_get_name(k5_context, k5_ccache)); + //com_err (NULL, code, + // "while setting cache flags (ticket cache %s)", + // krb5_cc_get_name(k5_context, k5_ccache)); return -1; } } else { if (code = krb5_cc_start_seq_get(k5_context, k5_ccache, &cursor)) { - com_err (NULL, code, "while starting to retrieve tickets"); + //com_err (NULL, code, "while starting to retrieve tickets"); return -1; } @@ -191,6 +192,7 @@ ticket_init_list ( strcat (buf, short_date (c.times.endtime - kwin_get_epoch())); strcat (buf, " "); + /* Add ticket service name and realm */ code = krb5_unparse_name (k5_context, c.server, &sname); if (code) { com_err (NULL, code, "while unparsing server name"); @@ -198,6 +200,7 @@ ticket_init_list ( } strcat (buf, sname); free (sname); + strcat (buf, flags_string (&c)); /* Add flag info */ l = strlen(buf); lpinfo = (LPTICKETINFO) malloc(sizeof(TICKETINFO) + l + 1); @@ -220,16 +223,16 @@ ticket_init_list ( if (code == KRB5_CC_END) { /* End of ccache */ if (code = krb5_cc_end_seq_get(k5_context, k5_ccache, &cursor)) { - com_err(NULL, code, "while finishing ticket retrieval"); + //com_err(NULL, code, "while finishing ticket retrieval"); return -1; } flags = KRB5_TC_OPENCLOSE; /* turns on OPENCLOSE mode */ if (code = krb5_cc_set_flags(k5_context, k5_ccache, flags)) { - com_err(NULL, code, "while closing ccache"); + //com_err(NULL, code, "while closing ccache"); return -1; } } else { - com_err(NULL, code, "while retrieving a ticket"); + //com_err(NULL, code, "while retrieving a ticket"); return -1; } } @@ -425,3 +428,48 @@ LONG ticket_drawitem( return TRUE; } /* ticket_drawitem */ + + +#ifdef KRB5 + +/*+ + * + * Flags_string + * + * Return buffer with the current flags for the credential + * + */ +char * +flags_string(krb5_creds *cred) { + static char buf[32]; + int i = 0; + + buf[i++] = ' '; + if (cred->ticket_flags & TKT_FLG_FORWARDABLE) + buf[i++] = 'F'; + if (cred->ticket_flags & TKT_FLG_FORWARDED) + buf[i++] = 'f'; + if (cred->ticket_flags & TKT_FLG_PROXIABLE) + buf[i++] = 'P'; + if (cred->ticket_flags & TKT_FLG_PROXY) + buf[i++] = 'p'; + if (cred->ticket_flags & TKT_FLG_MAY_POSTDATE) + buf[i++] = 'D'; + if (cred->ticket_flags & TKT_FLG_POSTDATED) + buf[i++] = 'd'; + if (cred->ticket_flags & TKT_FLG_INVALID) + buf[i++] = 'i'; + if (cred->ticket_flags & TKT_FLG_RENEWABLE) + buf[i++] = 'R'; + if (cred->ticket_flags & TKT_FLG_INITIAL) + buf[i++] = 'I'; + if (cred->ticket_flags & TKT_FLG_HW_AUTH) + buf[i++] = 'H'; + if (cred->ticket_flags & TKT_FLG_PRE_AUTH) + buf[i++] = 'A'; + + buf[i] = '\0'; + return(buf); +} + +#endif /* KRB5 */ -- cgit