diff options
author | Greg Hudson <ghudson@mit.edu> | 2009-04-30 17:49:28 +0000 |
---|---|---|
committer | Greg Hudson <ghudson@mit.edu> | 2009-04-30 17:49:28 +0000 |
commit | 6af3a5f54d650eaa673a19c3d6f242dee40610b5 (patch) | |
tree | 9644cb9ae2d6a8fbc4dc0fdecd7c1b23fc7b7b03 /src | |
parent | a4cef664aad9b21da014bc37308f3da3bf18e675 (diff) | |
download | krb5-6af3a5f54d650eaa673a19c3d6f242dee40610b5.tar.gz krb5-6af3a5f54d650eaa673a19c3d6f242dee40610b5.tar.xz krb5-6af3a5f54d650eaa673a19c3d6f242dee40610b5.zip |
In krb5_kt_resolve, ensure that the output parameter is set to NULL on
failure even if the underlying resolver doesn't do that properly.
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@22297 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/krb5/keytab/ktbase.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/lib/krb5/keytab/ktbase.c b/src/lib/krb5/keytab/ktbase.c index a764cc593..b99bee403 100644 --- a/src/lib/krb5/keytab/ktbase.c +++ b/src/lib/krb5/keytab/ktbase.c @@ -166,11 +166,13 @@ krb5_kt_resolve (krb5_context context, const char *name, krb5_keytab *ktid) unsigned int pfxlen; const char *cp, *resid; krb5_error_code err = 0; - + krb5_keytab id; + + *ktid = NULL; + cp = strchr (name, ':'); - if (!cp) { - return (*krb5_kt_dfl_ops.resolve)(context, name, ktid); - } + if (!cp) + return (*krb5_kt_dfl_ops.resolve)(context, name, ktid); pfxlen = cp - name; @@ -209,7 +211,9 @@ krb5_kt_resolve (krb5_context context, const char *name, krb5_keytab *ktid) k5_mutex_unlock(&kt_typehead_lock); for (; tlist; tlist = tlist->next) { if (strcmp (tlist->ops->prefix, pfx) == 0) { - err = (*tlist->ops->resolve)(context, resid, ktid); + err = (*tlist->ops->resolve)(context, resid, &id); + if (!err) + *ktid = id; goto cleanup; } } |