diff options
author | Greg Hudson <ghudson@mit.edu> | 2010-05-13 17:34:33 +0000 |
---|---|---|
committer | Greg Hudson <ghudson@mit.edu> | 2010-05-13 17:34:33 +0000 |
commit | aa53b05e76d809172e15c626750d1800a92246dc (patch) | |
tree | 698c6bd76e61e7c78f4182fb53f8e68f24bbb308 | |
parent | 592c43b440bccf0530f7935f926a7f74e12ff7c8 (diff) | |
download | krb5-aa53b05e76d809172e15c626750d1800a92246dc.tar.gz krb5-aa53b05e76d809172e15c626750d1800a92246dc.tar.xz krb5-aa53b05e76d809172e15c626750d1800a92246dc.zip |
Negative enctypes improperly read from keytabs
When reading enctypes from keytabs, we need to ntohs() the 16-bit
value we read in before sign-extending it to a 32-bit value in the
keyblock, or we run the risk of extending the wrong sign.
ticket: 6720
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@24016 dc483132-0cff-0310-8789-dd5450dbe970
-rw-r--r-- | src/lib/krb5/keytab/kt_file.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/src/lib/krb5/keytab/kt_file.c b/src/lib/krb5/keytab/kt_file.c index 3583506a4d..80070bcf5d 100644 --- a/src/lib/krb5/keytab/kt_file.c +++ b/src/lib/krb5/keytab/kt_file.c @@ -1362,10 +1362,9 @@ krb5_ktfileint_internal_read_entry(krb5_context context, krb5_keytab id, krb5_ke error = KRB5_KT_END; goto fail; } - ret_entry->key.enctype = (krb5_enctype)enctype; - if (KTVERSION(id) != KRB5_KT_VNO_1) - ret_entry->key.enctype = ntohs(ret_entry->key.enctype); + enctype = ntohs(enctype); + ret_entry->key.enctype = (krb5_enctype)enctype; /* key contents */ ret_entry->key.magic = KV5M_KEYBLOCK; |