From 6ccf928a5384c4a0aba8a3124e3287842263686a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Tue, 29 Nov 2005 09:10:47 +0000 Subject: [PATCH] (krb5_cc_get_prefix_ops): change the behavior to return NULL when its not found, and fcc when the name starts with a '/'. Almost matches behavior in other parts of the code, but can't really do that since the name passed in to this function may only contain the prefix itself without the colon. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@16306 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/cache.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/lib/krb5/cache.c b/lib/krb5/cache.c index 871dfb125..9403b5967 100644 --- a/lib/krb5/cache.c +++ b/lib/krb5/cache.c @@ -691,9 +691,8 @@ krb5_cc_clear_mcred(krb5_creds *mcred) /* * Get the cc ops that is registered in `context' to handle the * `prefix'. `prefix' can be a complete credential cache name or a - * prefix, the function will only use part up to the first colon (:). - * If there are no colon, a file credential cache will be returned for - * compatibility reasons. Returns NULL if ops not found. + * prefix, the function will only use part up to the first colon (:) + * if there is one. Returns NULL if ops not found. */ const krb5_cc_ops * @@ -702,17 +701,17 @@ krb5_cc_get_prefix_ops(krb5_context context, const char *prefix) char *p, *p1; int i; + if (prefix[0] == '/') + return &krb5_fcc_ops; + p = strdup(prefix); if (p == NULL) { krb5_set_error_string(context, "malloc - out of memory"); return NULL; } p1 = strchr(p, ':'); - if (p1 == NULL) { - free(p1); - return &krb5_fcc_ops; - } - *p1 = '\0'; + if (p1) + *p1 = '\0'; for(i = 0; i < context->num_cc_ops && context->cc_ops[i].prefix; i++) { if(strcmp(context->cc_ops[i].prefix, p) == 0) {