summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2009-04-30 17:49:28 +0000
committerGreg Hudson <ghudson@mit.edu>2009-04-30 17:49:28 +0000
commit6af3a5f54d650eaa673a19c3d6f242dee40610b5 (patch)
tree9644cb9ae2d6a8fbc4dc0fdecd7c1b23fc7b7b03 /src
parenta4cef664aad9b21da014bc37308f3da3bf18e675 (diff)
downloadkrb5-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.c14
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;
}
}