Skip to content

Commit

Permalink
KfW GUI -- show ticket flags
Browse files Browse the repository at this point in the history
Signed-off-by: Kevin Wasserman <kevin.wasserman@painless-security.com>

ticket: 7280 (new)
queue: kfw
target_version: 1.10.4
tags: pullup
  • Loading branch information
Kevin Wasserman authored and kaduk committed Aug 24, 2012
1 parent 28d8e44 commit ae2b7f9
Showing 1 changed file with 46 additions and 1 deletion.
47 changes: 46 additions & 1 deletion src/windows/leash/LeashView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down Expand Up @@ -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();

Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit ae2b7f9

Please sign in to comment.