From 89d9ad5354d05f6812a26aefe7b43ed7be5da150 Mon Sep 17 00:00:00 2001 From: Assar Westerlund Date: Sun, 17 Oct 1999 10:35:33 +0000 Subject: [PATCH] (find_etype): support null keys git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@7154 ec53bebd-3082-4978-b11e-865c3cabbd6b --- kdc/kerberos5.c | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/kdc/kerberos5.c b/kdc/kerberos5.c index 5fe258bf8..066377bba 100644 --- a/kdc/kerberos5.c +++ b/kdc/kerberos5.c @@ -115,11 +115,23 @@ find_etype(hdb_entry *princ, unsigned *etypes, unsigned len, Key **key, int *index) { int i; - krb5_error_code ret = -1; - for(i = 0; i < len ; i++) - if((ret = hdb_enctype2key(context, princ, etypes[i], key)) == 0) - break; - if(index) *index = i; + krb5_error_code ret = KRB5KDC_ERR_ETYPE_NOSUPP; + + for(i = 0; i < len ; i++) { + krb5_error_code tmp; + + tmp = hdb_enctype2key(context, princ, etypes[i], key); + if (tmp == 0) { + if ((*key)->key.keyvalue.length != 0) { + ret = 0; + break; + } else { + ret = KRB5KDC_ERR_NULL_KEY; + } + } + } + if(index) + *index = i; return ret; } @@ -138,9 +150,9 @@ find_keys(hdb_entry *client, if(client){ /* find client key */ ret = find_etype(client, etypes, num_etypes, ckey, &i); - if(ret){ + if (ret) { kdc_log(0, "Client has no support for etypes"); - return KRB5KDC_ERR_ETYPE_NOSUPP; + return ret; } *cetype = etypes[i]; } @@ -148,9 +160,9 @@ find_keys(hdb_entry *client, if(server){ /* find server key */ ret = find_etype(server, etypes, num_etypes, skey, NULL); - if(ret){ + if (ret) { kdc_log(0, "Server has no support for etypes"); - return KRB5KDC_ERR_ETYPE_NOSUPP; + return ret; } *setype = (*skey)->key.keytype; }