]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
Revert "HEIMDAL:hdb: export a hdb_enctype_supported() helper function"
authorKarolin Seeger <kseeger@samba.org>
Wed, 21 Feb 2018 09:15:22 +0000 (10:15 +0100)
committerKarolin Seeger <kseeger@samba.org>
Wed, 21 Feb 2018 10:23:24 +0000 (11:23 +0100)
This reverts commit 18d7cf191718b3a30165a43271e503cc07ca5b50.

source4/heimdal/kdc/kerberos5.c
source4/heimdal/kdc/krb5tgs.c
source4/heimdal/lib/hdb/hdb.c
source4/heimdal/lib/hdb/version-script.map

index c6ec65ee926b11160ce67768aca8794af62d10bc..db2c6262116ed8042093253829180d0cd2938dd8 100644 (file)
@@ -131,7 +131,7 @@ _kdc_find_etype(krb5_context context, krb5_boolean use_strongest_session_key,
     krb5_error_code ret;
     krb5_salt def_salt;
     krb5_enctype enctype = ETYPE_NULL;
-    Key *key = NULL;
+    Key *key;
     int i;
 
     /* We'll want to avoid keys with v4 salted keys in the pre-auth case... */
@@ -159,34 +159,29 @@ _kdc_find_etype(krb5_context context, krb5_boolean use_strongest_session_key,
 
        /* drive the search with local supported enctypes list */
        p = krb5_kerberos_enctypes(context);
-       for (i = 0; p[i] != ETYPE_NULL && key == NULL; i++) {
+       for (i = 0; p[i] != ETYPE_NULL && enctype == ETYPE_NULL; i++) {
            if (krb5_enctype_valid(context, p[i]) != 0)
                continue;
 
            /* check that the client supports it too */
-           for (j = 0; j < len && key == NULL; j++) {
+           for (j = 0; j < len && enctype == ETYPE_NULL; j++) {
                if (p[i] != etypes[j])
                    continue;
                /* save best of union of { client, crypto system } */
                if (clientbest == ETYPE_NULL)
                    clientbest = p[i];
-               if (enctype == ETYPE_NULL) {
-                   ret = hdb_enctype_supported(context, &princ->entry, p[i]);
-                   if (ret == 0) {
-                       enctype = p[i];
-                   }
-               }
                /* check target princ support */
                ret = hdb_enctype2key(context, &princ->entry, p[i], &key);
                if (ret)
                    continue;
                if (is_preauth && !is_default_salt_p(&def_salt, key))
                    continue;
+               enctype = p[i];
            }
        }
        if (clientbest != ETYPE_NULL && enctype == ETYPE_NULL)
            enctype = clientbest;
-       else if (key == NULL)
+       else if (enctype == ETYPE_NULL)
            ret = KRB5KDC_ERR_ETYPE_NOSUPP;
        if (ret == 0 && ret_enctype != NULL)
            *ret_enctype = enctype;
index a91b319c630ee84ee3494824d51a5a87519d861e..a71cfbff66cea333381fd456b9db07373ac439ba 100644 (file)
@@ -1703,7 +1703,7 @@ server_lookup:
 
            ret = _kdc_find_etype(context,
                                  config->tgs_use_strongest_session_key, FALSE,
-                                 server, b->etype.val, b->etype.len, &etype,
+                                 server, b->etype.val, b->etype.len, NULL,
                                  &skey);
            if(ret) {
                kdc_log(context, config, 0,
@@ -1711,6 +1711,7 @@ server_lookup:
                goto out;
            }
            ekey = &skey->key;
+           etype = skey->key.keytype;
            kvno = server->entry.kvno;
        }
 
index 4c8df930b0ce8e467c374b9ca223228924f5d747..5dc5a0957e080abf00ebd741339e6dae6aa2a886 100644 (file)
@@ -93,12 +93,11 @@ static struct hdb_method dbmetod =
 #endif
 
 
-static krb5_error_code
-_hdb_next_enctype2key(krb5_context context,
+krb5_error_code
+hdb_next_enctype2key(krb5_context context,
                     const hdb_entry *e,
                     krb5_enctype enctype,
-                    Key **key,
-                    bool require_key)
+                    Key **key)
 {
     Key *k;
 
@@ -106,10 +105,6 @@ _hdb_next_enctype2key(krb5_context context,
         k < e->keys.val + e->keys.len;
         k++)
     {
-       if (require_key && k->key.keyvalue.length == 0) {
-           continue;
-       }
-
        if(k->key.keytype == enctype){
            *key = k;
            return 0;
@@ -121,16 +116,6 @@ _hdb_next_enctype2key(krb5_context context,
     return KRB5_PROG_ETYPE_NOSUPP; /* XXX */
 }
 
-
-krb5_error_code
-hdb_next_enctype2key(krb5_context context,
-                    const hdb_entry *e,
-                    krb5_enctype enctype,
-                    Key **key)
-{
-       return _hdb_next_enctype2key(context, e, enctype, key, true);
-}
-
 krb5_error_code
 hdb_enctype2key(krb5_context context,
                hdb_entry *e,
@@ -141,15 +126,6 @@ hdb_enctype2key(krb5_context context,
     return hdb_next_enctype2key(context, e, enctype, key);
 }
 
-krb5_error_code
-hdb_enctype_supported(krb5_context context,
-               hdb_entry *e,
-               krb5_enctype enctype)
-{
-    Key *key = NULL;
-    return _hdb_next_enctype2key(context, e, enctype, &key, false);
-}
-
 void
 hdb_free_key(Key *key)
 {
index c4bd8f4cd4475dfcbf5dd08affcb9ec0c8152519..f80fb78a654c6b25e76576f10a91e4805e4723d2 100644 (file)
@@ -20,7 +20,6 @@ HEIMDAL_HDB_1.0 {
                hdb_dbinfo_get_realm;
                hdb_default_db;
                hdb_enctype2key;
-               hdb_enctype_supported;
                hdb_entry2string;
                hdb_entry2value;
                hdb_entry_alias2value;