krb5: Reorder checks in _key_schedule
_krb5_find_enctype is a moderately expensive operation, as it does a linear search of the enctype lists. Avoid calling it in _key_schedule when we already have a key schedule in place. This change makes the most common check the first in the function.
This commit is contained in:

committed by
Jeffrey Altman

parent
aedc1fd4bd
commit
152a23f2ce
@@ -132,9 +132,14 @@ _key_schedule(krb5_context context,
|
|||||||
struct _krb5_key_data *key)
|
struct _krb5_key_data *key)
|
||||||
{
|
{
|
||||||
krb5_error_code ret;
|
krb5_error_code ret;
|
||||||
struct _krb5_encryption_type *et = _krb5_find_enctype(key->key->keytype);
|
struct _krb5_encryption_type *et;
|
||||||
struct _krb5_key_type *kt;
|
struct _krb5_key_type *kt;
|
||||||
|
|
||||||
|
if (key->schedule != NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
et = _krb5_find_enctype(key->key->keytype);
|
||||||
|
|
||||||
if (et == NULL) {
|
if (et == NULL) {
|
||||||
return unsupported_enctype (context,
|
return unsupported_enctype (context,
|
||||||
key->key->keytype);
|
key->key->keytype);
|
||||||
@@ -144,8 +149,6 @@ _key_schedule(krb5_context context,
|
|||||||
|
|
||||||
if(kt->schedule == NULL)
|
if(kt->schedule == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
if (key->schedule != NULL)
|
|
||||||
return 0;
|
|
||||||
ALLOC(key->schedule, 1);
|
ALLOC(key->schedule, 1);
|
||||||
if (key->schedule == NULL)
|
if (key->schedule == NULL)
|
||||||
return krb5_enomem(context);
|
return krb5_enomem(context);
|
||||||
|
Reference in New Issue
Block a user