diff options
author | Tom Yu <tlyu@mit.edu> | 2004-08-12 21:33:18 +0000 |
---|---|---|
committer | Tom Yu <tlyu@mit.edu> | 2004-08-12 21:33:18 +0000 |
commit | 27b8c74a7adfcefbec493d957ba798e232ecd404 (patch) | |
tree | ee403222635e8defb0093f3950a511d9b2986210 /src | |
parent | 3e02a517faf35beb5dbee510ca9097bb536b00b4 (diff) | |
download | krb5-27b8c74a7adfcefbec493d957ba798e232ecd404.zip krb5-27b8c74a7adfcefbec493d957ba798e232ecd404.tar.gz krb5-27b8c74a7adfcefbec493d957ba798e232ecd404.tar.bz2 |
pullup from trunk
ticket: 2634
version_fixed: 1.3.5
git-svn-id: svn://anonsvn.mit.edu/krb5/branches/krb5-1-3@16657 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r-- | src/include/ChangeLog | 5 | ||||
-rw-r--r-- | src/include/k5-int.h | 1 | ||||
-rw-r--r-- | src/lib/krb4/CCache-glue.c | 48 | ||||
-rw-r--r-- | src/lib/krb4/ChangeLog | 5 | ||||
-rw-r--r-- | src/lib/krb5/ccache/ChangeLog | 5 | ||||
-rw-r--r-- | src/lib/krb5/ccache/ccdefault.c | 94 | ||||
-rw-r--r-- | src/lib/krb5/os/ChangeLog | 6 | ||||
-rw-r--r-- | src/lib/krb5/os/ccdefname.c | 7 | ||||
-rw-r--r-- | src/lib/krb5/os/init_os_ctx.c | 6 |
9 files changed, 55 insertions, 122 deletions
diff --git a/src/include/ChangeLog b/src/include/ChangeLog index f7283b9..4eb59a4 100644 --- a/src/include/ChangeLog +++ b/src/include/ChangeLog @@ -1,3 +1,8 @@ +2004-07-15 Alexandra Ellwood <lxs@mit.edu> + + * k5-int.h (krb5_os_context) + Removed default_ccprincipal field from krb5_context + 2004-01-04 Jeffrey Altman <jaltman@mit.edu> * win-mac.h: conditionally define strcasecmp/strncasecmp macros diff --git a/src/include/k5-int.h b/src/include/k5-int.h index 61333e4..6ea6d63 100644 --- a/src/include/k5-int.h +++ b/src/include/k5-int.h @@ -774,7 +774,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 3a58537..db00631 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 0842831..ae5e548 100644 --- a/src/lib/krb4/ChangeLog +++ b/src/lib/krb4/ChangeLog @@ -1,3 +1,8 @@ +2004-07-15 Alexandra Ellwood <lxs@mit.edu> + + * CCache-glue.c (krb_get_cred) + Removed default principal tracking. + 2003-08-15 Alexandra Ellwood <lxs@mit.edu> * mk_auth.c: krb_check_auth clears the return value for the diff --git a/src/lib/krb5/ccache/ChangeLog b/src/lib/krb5/ccache/ChangeLog index afcbdd2..16de041 100644 --- a/src/lib/krb5/ccache/ChangeLog +++ b/src/lib/krb5/ccache/ChangeLog @@ -1,3 +1,8 @@ +2004-07-15 Alexandra Ellwood <lxs@mit.edu> + + * ccdefault.c (krb5_cc_default, krb5int_cc_default) + Removed default_ccprincipal field from krb5_context + 2004-07-07 Jeffrey Altman <jaltman@mit.edu> * cc_mslsa.c: Fix thread safety diff --git a/src/lib/krb5/ccache/ccdefault.c b/src/lib/krb5/ccache/ccdefault.c index 3dfb1a3..8a45a24 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 074a62a..3d312b4 100644 --- a/src/lib/krb5/os/ChangeLog +++ b/src/lib/krb5/os/ChangeLog @@ -1,3 +1,9 @@ +2004-07-15 Alexandra Ellwood <lxs@mit.edu> + + * 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-06-02 Tom Yu <tlyu@mit.edu> * an_to_ln.c (do_replacement): Patch from Bill Dodd to fix missing diff --git a/src/lib/krb5/os/ccdefname.c b/src/lib/krb5/os/ccdefname.c index e77bcfe..9db56d4 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 c43771d..f46638e 100644 --- a/src/lib/krb5/os/init_os_ctx.c +++ b/src/lib/krb5/os/init_os_ctx.c @@ -358,7 +358,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); @@ -471,11 +470,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; free(os_ctx); ctx->os_context = 0; |