diff options
author | Kevin Wasserman <kevin.wasserman@painless-security.com> | 2012-06-27 19:05:22 -0400 |
---|---|---|
committer | Ben Kaduk <kaduk@mit.edu> | 2012-08-24 16:58:45 -0400 |
commit | ae2b7f989b34e14d03005fb5f45f3314ddab84b9 (patch) | |
tree | 81af17415822eabd707ff113c08530661dea59a4 /src/windows | |
parent | 28d8e44e3474afcc1ea3b472c3336bd1017b55a6 (diff) | |
download | krb5-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
Diffstat (limited to 'src/windows')
-rw-r--r-- | src/windows/leash/LeashView.cpp | 47 |
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) |