summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Wasserman <kevin.wasserman@painless-security.com>2012-06-27 19:05:22 -0400
committerBen Kaduk <kaduk@mit.edu>2012-08-24 16:58:45 -0400
commitae2b7f989b34e14d03005fb5f45f3314ddab84b9 (patch)
tree81af17415822eabd707ff113c08530661dea59a4
parent28d8e44e3474afcc1ea3b472c3336bd1017b55a6 (diff)
downloadkrb5-ae2b7f989b34e14d03005fb5f45f3314ddab84b9.tar.gz
krb5-ae2b7f989b34e14d03005fb5f45f3314ddab84b9.tar.xz
krb5-ae2b7f989b34e14d03005fb5f45f3314ddab84b9.zip
KfW GUI -- show ticket flags
Signed-off-by: Kevin Wasserman <kevin.wasserman@painless-security.com> ticket: 7280 (new) queue: kfw target_version: 1.10.4 tags: pullup
-rw-r--r--src/windows/leash/LeashView.cpp47
1 files changed, 46 insertions, 1 deletions
diff --git a/src/windows/leash/LeashView.cpp b/src/windows/leash/LeashView.cpp
index 11902dd522..be4a8a51f2 100644
--- a/src/windows/leash/LeashView.cpp
+++ b/src/windows/leash/LeashView.cpp
@@ -151,6 +151,47 @@ ViewColumnInfo CLeashView::sm_viewColumns[] =
{"Flags", false, ID_SHOW_TICKET_FLAGS, 100}, // TICKET_FLAGS
};
+static struct TicketFlag {
+ unsigned long m_flag;
+ const LPTSTR m_description;
+} sm_TicketFlags[] =
+{
+ {TKT_FLG_FORWARDABLE, _T("Forwardable")},
+ {TKT_FLG_FORWARDED, _T("Forwarded")},
+ {TKT_FLG_PROXIABLE, _T("Proxiable")},
+ {TKT_FLG_PROXY, _T("Proxy")},
+ {TKT_FLG_RENEWABLE, _T("Renewable")},
+};
+
+static void krb5TicketFlagsToString(unsigned long flags, LPTSTR *outStr)
+{
+ const int numFlags = sizeof(sm_TicketFlags) / sizeof(sm_TicketFlags[0]);
+ int strSize = 1;
+ LPTSTR str;
+ // pass 1: compute size
+ for (int i = 0; i < numFlags; i++) {
+ if (flags & sm_TicketFlags[i].m_flag) {
+ if (strSize > 1)
+ strSize += 2;
+ strSize += strlen(sm_TicketFlags[i].m_description);
+ }
+ }
+ // allocate
+ str = (LPSTR)malloc(strSize);
+ if (str != NULL) {
+ *str = 0;
+ // pass 2: construct string
+ for (int i = 0; i < numFlags; i++) {
+ if (flags & sm_TicketFlags[i].m_flag) {
+ if (str[0])
+ _tcscat_s(str, strSize, _T(", "));
+ _tcscat_s(str, strSize, sm_TicketFlags[i].m_description);
+ }
+ }
+ }
+ *outStr = str;
+}
+
static HFONT CreateBoldFont(HFONT font)
{
@@ -1053,6 +1094,7 @@ void CLeashView::AddDisplayItem(CListCtrl &list,
{
TCHAR* localTimeStr=NULL;
TCHAR* durationStr=NULL;
+ TCHAR* flagsStr=NULL;
TCHAR tempStr[MAX_DURATION_STR+1];
time_t now = LeashTime();
@@ -1104,8 +1146,11 @@ void CLeashView::AddDisplayItem(CListCtrl &list,
list.SetItemText(iItem, iSubItem++, encTypes);
}
if (sm_viewColumns[TICKET_FLAGS].m_enabled) {
- list.SetItemText(iItem, iSubItem++, "ticket flags here");
+ krb5TicketFlagsToString(flags, &flagsStr);
+ list.SetItemText(iItem, iSubItem++, flagsStr);
}
+ if (flagsStr)
+ free(flagsStr);
if (localTimeStr)
free(localTimeStr);
if (durationStr)