NIM: BUG: khm_krb5_initialize() failed to return error code
authorJeffrey Altman <jaltman@secure-endpoints.com>
Mon, 24 Sep 2007 12:30:03 +0000 (12:30 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Mon, 24 Sep 2007 12:30:03 +0000 (12:30 +0000)
khm_krb5_initialize() is called in the krb5cred.dll and krb4cred.dll
credential providers in order to ensure that the caller has references
to a valid krb5_context and a valid krb5_ccache.  If the krb5_cc_resolve()
call failed, the error code was not being returned to the caller.
Instead, success was returned which in turn would result in the caller
believing the NULL krb5_ccache pointer was in fact valid.

This fix resolves Microsoft's WER Event ID 432405961.

ticket: new
component: windows

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@19967 dc483132-0cff-0310-8789-dd5450dbe970

src/windows/identity/plugins/common/krb5common.c

index 1278fbcfa7d8c7c5eeca67baee3262dd0324f6f2..36d647cc774db05be34db787eefa6764b1679ab5 100644 (file)
@@ -42,7 +42,7 @@ khm_krb5_error(krb5_error_code rc, LPCSTR FailedFunctionName,
                  krb5_ccache * cache)
 {
 #ifdef NO_KRB5
-    return 0;
+    return -1;
 #else
 
 #ifdef SHOW_MESSAGE_IN_AN_ANNOYING_WAY
@@ -87,12 +87,12 @@ khm_krb5_initialize(khm_handle ident,
                     krb5_ccache *cache)
 {
 #ifdef NO_KRB5
-    return(0);
+    return(-1);
 #else
 
     LPCSTR          functionName = NULL;
     int             freeContextFlag = 0;
-    krb5_error_code    rc = 0;
+    krb5_error_code    rc = -1;
     krb5_flags          flags = 0;
 
     if (pkrb5_init_context == NULL)
@@ -132,7 +132,7 @@ khm_krb5_initialize(khm_handle ident,
                 if(UnicodeStrToAnsi(ccname, sizeof(ccname), wccname) == 0)
                     break;
 
-                if((*pkrb5_cc_resolve)(*ctx, ccname, cache)) {
+                if(rc = (*pkrb5_cc_resolve)(*ctx, ccname, cache)) {
                     functionName = "krb5_cc_resolve()";
                     freeContextFlag = 1;
                     goto on_error;