summaryrefslogtreecommitdiffstats
path: root/src/windows/cns
diff options
context:
space:
mode:
authorKeith Vetter <keithv@fusion.com>1995-03-31 02:05:49 +0000
committerKeith Vetter <keithv@fusion.com>1995-03-31 02:05:49 +0000
commitc365b64a31142a6ae4628741dd5b695ac66bb2a3 (patch)
tree8de3a7d061eace031f83f3f812066dcb2a596727 /src/windows/cns
parent9f0886f9c786a5dbc1642ec470a527be66548149 (diff)
downloadkrb5-c365b64a31142a6ae4628741dd5b695ac66bb2a3.tar.gz
krb5-c365b64a31142a6ae4628741dd5b695ac66bb2a3.tar.xz
krb5-c365b64a31142a6ae4628741dd5b695ac66bb2a3.zip
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
Diffstat (limited to 'src/windows/cns')
-rw-r--r--src/windows/cns/changelo11
-rw-r--r--src/windows/cns/cns.c120
-rw-r--r--src/windows/cns/cns.h48
-rw-r--r--src/windows/cns/cns.rc96
-rw-r--r--src/windows/cns/makefile2
-rw-r--r--src/windows/cns/tktlist.c62
6 files changed, 238 insertions, 101 deletions
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 */