From: Alexandra Ellwood Date: Thu, 15 Jul 2004 17:45:04 +0000 (+0000) Subject: Remove use of client principal from krb5_context (default_ccprincipal) and default... X-Git-Tag: krb5-1.4-beta1~205 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=963fe7c8d9674743b1f848fb3fd2b7306b8ffe0b;p=krb5.git Remove use of client principal from krb5_context (default_ccprincipal) and default principal from v4 CCAPI glue code ticket: 2634 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16602 dc483132-0cff-0310-8789-dd5450dbe970 --- diff --git a/src/include/ChangeLog b/src/include/ChangeLog index 04be6e587..88178298a 100644 --- a/src/include/ChangeLog +++ b/src/include/ChangeLog @@ -1,3 +1,8 @@ +2004-07-15 Alexandra Ellwood + + * k5-int.h (krb5_os_context) + Removed default_ccprincipal field from krb5_context + 2004-07-14 Jeffrey Altman * k5-int.h: define for WIN32 the macro krb5int_zap_data to diff --git a/src/include/k5-int.h b/src/include/k5-int.h index d668f1ec9..404130974 100644 --- a/src/include/k5-int.h +++ b/src/include/k5-int.h @@ -764,7 +764,6 @@ typedef struct _krb5_os_context { krb5_int32 usec_offset; krb5_int32 os_flags; char * default_ccname; - krb5_principal default_ccprincipal; } *krb5_os_context; /* diff --git a/src/lib/krb4/CCache-glue.c b/src/lib/krb4/CCache-glue.c index 3a585377f..db00631f8 100644 --- a/src/lib/krb4/CCache-glue.c +++ b/src/lib/krb4/CCache-glue.c @@ -68,11 +68,7 @@ static void UpdateDefaultCache (void); /* * Name of the default cache */ -char* gDefaultCacheName = NULL; -char gDefaultName[ANAME_SZ]; -char gDefaultInstance[INST_SZ]; -char gDefaultRealm[REALM_SZ]; -Boolean gHaveDefaultPrincipal = false; +char* gDefaultCacheName = NULL; /* * Initialize credentials cache @@ -329,44 +325,13 @@ krb_get_cred ( if (strncmp (service, KRB_TICKET_GRANTING_TICKET, ANAME_SZ) == 0) { OSStatus err; char *cacheName; - KLPrincipal defaultPrincipal = nil; KLPrincipal outPrincipal; - if (gHaveDefaultPrincipal) { - err = KLCreatePrincipalFromTriplet (gDefaultName, gDefaultInstance, gDefaultRealm, &defaultPrincipal); - if (err != klNoErr) - defaultPrincipal = nil; - } - - err = __KLInternalAcquireInitialTicketsForCache (defaultPrincipal, NULL, TKT_FILE, - kerberosVersion_V4, &outPrincipal, &cacheName); - if (defaultPrincipal != nil) - KLDisposePrincipal (defaultPrincipal); - - if (err == noErr) { - char* newName = nil; - char* newInstance = nil; - char* newRealm = nil; - - gHaveDefaultPrincipal = false; - err = KLGetTripletFromPrincipal (outPrincipal, &newName, &newInstance, &newRealm); - if (err == noErr) { - // If this isn't a valid krb4 principal, don't store it or track the cache name - if ((strlen (newName) < ANAME_SZ) && (strlen (newInstance) < INST_SZ) && - (strlen (newRealm) < REALM_SZ)) { - strcpy (gDefaultName, newName); - strcpy (gDefaultInstance, newInstance); - strcpy (gDefaultRealm, newRealm); - krb_set_tkt_string (cacheName); // Tickets for the krb4 principal went here - - gHaveDefaultPrincipal = true; - } - - KLDisposeString (newName); - KLDisposeString (newInstance); - KLDisposeString (newRealm); - } - + err = __KLInternalAcquireInitialTicketsForCache (TKT_FILE, kerberosVersion_V4, NULL, + &outPrincipal, &cacheName); + + if (err == klNoErr) { + krb_set_tkt_string (cacheName); // Tickets for the krb4 principal went here KLDisposeString (cacheName); KLDisposePrincipal (outPrincipal); } else { @@ -498,7 +463,6 @@ krb_set_tkt_string ( gDefaultCacheName = malloc (strlen (val) + 1); if (gDefaultCacheName != NULL) strcpy (gDefaultCacheName, val); - gHaveDefaultPrincipal = false; } } diff --git a/src/lib/krb4/ChangeLog b/src/lib/krb4/ChangeLog index 7b865d367..41c321078 100644 --- a/src/lib/krb4/ChangeLog +++ b/src/lib/krb4/ChangeLog @@ -1,3 +1,8 @@ +2004-07-15 Alexandra Ellwood + + * CCache-glue.c (krb_get_cred) + Removed default principal tracking. + 2004-07-14 Ken Raeburn * recvauth.c (krb_recvauth): Initialize cp and tmp_buf. Check diff --git a/src/lib/krb5/ccache/ChangeLog b/src/lib/krb5/ccache/ChangeLog index ea620fcce..143fa581d 100644 --- a/src/lib/krb5/ccache/ChangeLog +++ b/src/lib/krb5/ccache/ChangeLog @@ -1,3 +1,8 @@ +2004-07-15 Alexandra Ellwood + + * ccdefault.c (krb5_cc_default, krb5int_cc_default) + Removed default_ccprincipal field from krb5_context + 2004-07-14 Ken Raeburn * t_cc.c (cc_test): Rename one of the "resolve" cases so the diff --git a/src/lib/krb5/ccache/ccdefault.c b/src/lib/krb5/ccache/ccdefault.c index 3dfb1a32c..8a45a243b 100644 --- a/src/lib/krb5/ccache/ccdefault.c +++ b/src/lib/krb5/ccache/ccdefault.c @@ -42,7 +42,7 @@ static HANDLE hLeashDLL = INVALID_HANDLE_VALUE; krb5_error_code KRB5_CALLCONV krb5_cc_default(krb5_context context, krb5_ccache *ccache) { - krb5_error_code retval; + krb5_error_code retval; krb5_os_context os_ctx; if (!context || context->magic != KV5M_CONTEXT) @@ -50,13 +50,7 @@ krb5_cc_default(krb5_context context, krb5_ccache *ccache) os_ctx = context->os_context; - retval = krb5_cc_resolve(context, krb5_cc_default_name(context), ccache); - if (!retval && ccache && !os_ctx->default_ccprincipal) { - /* We got a ccache... remember what principal is associated with it */ - if (krb5_cc_get_principal (context, *ccache, &os_ctx->default_ccprincipal) != 0) - os_ctx->default_ccprincipal = 0; - } - return retval; + return krb5_cc_resolve(context, krb5_cc_default_name(context), ccache); } /* This is the internal function which opens the default ccache. On platforms supporting @@ -69,53 +63,29 @@ krb5_cc_default(krb5_context context, krb5_ccache *ccache) krb5_error_code KRB5_CALLCONV krb5int_cc_default(krb5_context context, krb5_ccache *ccache) { -#ifdef USE_LOGIN_LIBRARY - { - /* make sure the default cache has tix before you open it */ - char *outCacheName; - KLPrincipal desiredPrincipal = nil; - krb5_principal desiredKrb5Principal; - krb5_error_code err; - krb5_os_context os_ctx; + if (!context || context->magic != KV5M_CONTEXT) { + return KV5M_CONTEXT; + } - if (!context || context->magic != KV5M_CONTEXT) - return KV5M_CONTEXT; - - os_ctx = context->os_context; - - desiredKrb5Principal = os_ctx->default_ccprincipal; - - /* do we want a specific client principal? */ - if (desiredKrb5Principal != NULL) { - char *desiredName; - - err = krb5_unparse_name (context, desiredKrb5Principal, &desiredName); - if (!err) { - err = KLCreatePrincipalFromString (desiredName, - kerberosVersion_V5, &desiredPrincipal); - krb5_free_unparsed_name (context, desiredName); - if (err != klNoErr) - desiredPrincipal = nil; - } - } - - /* Try to make sure a krb5 tgt is in the cache */ - err = __KLInternalAcquireInitialTicketsForCache (desiredPrincipal, NULL, - krb5_cc_default_name (context), - kerberosVersion_V5, nil, &outCacheName); - if (err == klNoErr) { - /* This function tries to get tickets and put them in the specified - cache, however, if the cache does not exist, it may choose to put - them elsewhere (ie: the system default) so we set that here */ - if (strcmp (krb5_cc_default_name (context), outCacheName) != 0) { - krb5_cc_set_default_name (context, outCacheName); - } - KLDisposeString (outCacheName); - } - - if (desiredPrincipal != nil) - KLDisposePrincipal (desiredPrincipal); - } +#ifdef USE_LOGIN_LIBRARY + { + /* make sure the default cache has tix before you open it */ + KLStatus err = klNoErr; + char *outCacheName = NULL; + + /* Try to make sure a krb5 tgt is in the cache */ + err = __KLInternalAcquireInitialTicketsForCache (krb5_cc_default_name (context), kerberosVersion_V5, + NULL, NULL, &outCacheName); + if (err == klNoErr) { + /* This function tries to get tickets and put them in the specified + cache, however, if the cache does not exist, it may choose to put + them elsewhere (ie: the system default) so we set that here */ + if (strcmp (krb5_cc_default_name (context), outCacheName) != 0) { + krb5_cc_set_default_name (context, outCacheName); + } + KLDisposeString (outCacheName); + } + } #else #ifdef USE_LEASH @@ -123,20 +93,12 @@ krb5int_cc_default(krb5_context context, krb5_ccache *ccache) hLeashDLL = LoadLibrary("leashw32.dll"); if ( hLeashDLL != INVALID_HANDLE_VALUE ) { (FARPROC) pLeash_AcquireInitialTicketsIfNeeded = - GetProcAddress(hLeashDLL, "not_an_API_Leash_AcquireInitialTicketsIfNeeded"); + GetProcAddress(hLeashDLL, "not_an_API_Leash_AcquireInitialTicketsIfNeeded"); } } - - if ( pLeash_AcquireInitialTicketsIfNeeded ) - { - krb5_os_context os_ctx; - - if (!context || context->magic != KV5M_CONTEXT) - return KV5M_CONTEXT; - - os_ctx = context->os_context; - - pLeash_AcquireInitialTicketsIfNeeded(context,os_ctx->default_ccprincipal); + + if ( pLeash_AcquireInitialTicketsIfNeeded ) { + pLeash_AcquireInitialTicketsIfNeeded(context, NULL); } #endif #endif diff --git a/src/lib/krb5/os/ChangeLog b/src/lib/krb5/os/ChangeLog index 4efd66d12..65a8ebc7c 100644 --- a/src/lib/krb5/os/ChangeLog +++ b/src/lib/krb5/os/ChangeLog @@ -1,3 +1,9 @@ +2004-07-15 Alexandra Ellwood + + * init_os_ctx.c (krb5_os_init_context, krb5_os_free_context) + ccdefname.c (krb5_cc_set_default_name): + Removed default_ccprincipal field from krb5_context + 2004-07-04 Ken Raeburn * dnssrv.c (krb5int_make_srv_query_realm) [HAVE_RES_NSEARCH]: Use diff --git a/src/lib/krb5/os/ccdefname.c b/src/lib/krb5/os/ccdefname.c index e77bcfef9..9db56d468 100644 --- a/src/lib/krb5/os/ccdefname.c +++ b/src/lib/krb5/os/ccdefname.c @@ -259,13 +259,6 @@ krb5_cc_set_default_name(krb5_context context, const char *name) return ENOMEM; strcpy(new_name, name_buf); - if (!os_ctx->default_ccname || (strcmp(os_ctx->default_ccname, new_name) != 0)) { - /* the ccache changed... forget the old principal */ - if (os_ctx->default_ccprincipal) - krb5_free_principal (context, os_ctx->default_ccprincipal); - os_ctx->default_ccprincipal = 0; /* we don't care until we use it */ - } - if (os_ctx->default_ccname) free(os_ctx->default_ccname); diff --git a/src/lib/krb5/os/init_os_ctx.c b/src/lib/krb5/os/init_os_ctx.c index b569b8a86..0dd7cccd6 100644 --- a/src/lib/krb5/os/init_os_ctx.c +++ b/src/lib/krb5/os/init_os_ctx.c @@ -349,7 +349,6 @@ krb5_os_init_context(krb5_context ctx) os_ctx->usec_offset = 0; os_ctx->os_flags = 0; os_ctx->default_ccname = 0; - os_ctx->default_ccprincipal = 0; krb5_cc_set_default_name(ctx, NULL); @@ -459,11 +458,6 @@ krb5_os_free_context(krb5_context ctx) os_ctx->default_ccname = 0; } - if (os_ctx->default_ccprincipal) { - krb5_free_principal (ctx, os_ctx->default_ccprincipal); - os_ctx->default_ccprincipal = 0; - } - os_ctx->magic = 0; if (ctx->profile) {