MSLSA krb5_cc module fails to check success of UNICODE string conversions
authorJeffrey Altman <jaltman@secure-endpoints.com>
Mon, 24 Sep 2007 17:46:26 +0000 (17:46 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Mon, 24 Sep 2007 17:46:26 +0000 (17:46 +0000)
commit2c39bcf3810605304227ba038b1125a986102d67
treea2d4d099382f83e87a8ac53447ae9748a1abbf68
parent1aa9dea29599fc493ce38478133fbc36b50d8e49
MSLSA krb5_cc module fails to check success of UNICODE string conversions

The MSLSA krb5_cc module was written with an assumption that probably does not
hold true anymore.  It assumed that all Kerberos strings although stored in
wide character data structures could in fact be represented in the application's
ANSI code page and that such conversions would not fail.

The UnicodeToANSI() function did not check the result of WideCharToMultiByte()
for success.  If the conversion failed, this could result in the caller believing
the contents of the output string buffer were a valid string when instead they
were simply stack garbage.

The UnicodeStringToMITPrinc() and KerbExternalNameToMITPrinc() functions did not
check the return value of krb5_parse_name() for success.  If krb5_parse_name()
was passed a pointer to garbage on the stack instead of an actual principal name,
this could result in the caller believing the output krb5_principal * was valid
when instead it was NULL.

The function CacheInfoEx2ToMITCred() is dependent on the success or failure of
UnicodeStringToMITPrinc() assumed it could not fail and did not return a
success or failure indication to its caller.

If Microsoft a formatted ticket contains a Unicode string that can not be
represented in the application's ANSI code page, this could result in a NULL
pointer dereference during a call to krb5_cc_resolve("MSLSA:") or
krb5_cc_retrieve(), or krb5_cc_get_principal().

With the changes in this commit, tickets containing principal names that cannot
be represented in the application's ANSI code page will be hidden from the
application.

ticket: new

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@19969 dc483132-0cff-0310-8789-dd5450dbe970
src/lib/krb5/ccache/cc_mslsa.c